Files
IronFox/scripts/ci-publish-packages.sh
Akash Yadav f5283ad5ef fix: update path to changelog files
Signed-off-by: Akash Yadav <itsaky01@gmail.com>
2025-06-14 02:46:56 +05:30

87 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# This file is expected to be executed in GitLab CI
# DO NOT executed this manually!
set -eu
source "$(realpath $(dirname "$0"))/versions.sh"
export GENERIC_PACKAGES_URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic"
upload_to_package_registry() {
local file="$1"
local package_name="$2"
# shellcheck disable=SC2155
local file_name="$(basename "$file")"
curl --header "PRIVATE-TOKEN: $GITLAB_CI_API_TOKEN" \
--upload-file "$file" \
"$GENERIC_PACKAGES_URL/${package_name}/${IRONFOX_VERSION}/${file_name}"
}
export ARTIFACTS=$CI_PROJECT_DIR/artifacts
export APK_ARTIFACTS=$ARTIFACTS/apk
export APKS_ARTIFACTS=$ARTIFACTS/apks
export BUILD_DIR="$CI_PROJECT_DIR/build"
mkdir -p "$BUILD_DIR"
RELEASE_NOTES_FILE="$BUILD_DIR/release-notes.md"
CHECKSUMS_FILE="$BUILD_DIR/asset-checksums.txt"
RELEASE_FILE="$BUILD_DIR/release.yml"
echo -n "" > "$RELEASE_NOTES_FILE"
echo -n "" > "$CHECKSUMS_FILE"
declare -a assets
upload_asset() {
package_name="$1"
file="$2"
file_name="$(basename "$file")"
echo "$(sha256sum -b "$file" | cut -d ' ' -f 1) ${file_name}" >> "$CHECKSUMS_FILE"
upload_to_package_registry "$file" "$package_name"
assets+=("{\"name\": \"$file_name\",\"url\": \"$GENERIC_PACKAGES_URL/${package_name}/${IRONFOX_VERSION}/${file_name}\",\"link_type\": \"package\",\"direct_asset_path\": \"/${file_name}\"}")
}
# Upload packages to package registry
for apk in "$APK_ARTIFACTS"/*.apk; do
package_name="apk"
upload_asset "$package_name" "$apk"
done
for apks in "$APKS_ARTIFACTS"/*.apks; do
package_name="apkset"
upload_asset "$package_name" "$apks"
done
{
changelog_file="$CI_PROJECT_DIR/changelogs/${IRONFOX_VERSION}.md"
if [[ -f "$changelog_file" ]]; then
cat "$changelog_file"
fi
echo "## Checksums"
echo ""
echo "\`\`\`"
cat $CHECKSUMS_FILE
echo "\`\`\`"
echo ""
echo "---"
echo "_This release was automatically generated by the CI/CD pipeline ([view pipeline]($CI_JOB_URL)) and is guaranteed to be generated from commit [${CI_COMMIT_SHORT_SHA}](${CI_PROJECT_URL}/-/tree/${CI_COMMIT_SHA})._"
echo ""
} >> "$RELEASE_NOTES_FILE"
{
echo "---"
echo "name: IronFox v${IRONFOX_VERSION}"
echo "tag-name: v${IRONFOX_VERSION}"
echo "description: |"
awk '{print " " $0}' < "$RELEASE_NOTES_FILE"
echo "assets-link:"
for asset in "${assets[@]}"; do
echo " - '$asset'"
done
} > "$RELEASE_FILE"