#!/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" 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 -vp "$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"