summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOskar <oskar@mullvad.net>2025-06-27 13:44:15 +0200
committerOskar <oskar@mullvad.net>2025-06-27 13:44:15 +0200
commita58f7ac6633ca3e82cc75c72f96aa5bc740a53f3 (patch)
tree5c0156db385ef6bac0ce5b5a36f70d583f895389
parent915efd1889adb45f1a0bc0781383fb37995970f7 (diff)
downloadmullvadvpn-automate-release-process.tar.xz
mullvadvpn-automate-release-process.zip
Add script to handle verification and publishing of releaseautomate-release-process
-rw-r--r--ci/buildserver-config.sh3
-rw-r--r--ci/buildserver-handle-release.sh33
-rwxr-xr-xci/buildserver-upload.sh12
3 files changed, 46 insertions, 2 deletions
diff --git a/ci/buildserver-config.sh b/ci/buildserver-config.sh
index 4f3f7eb2a4..9cdd13fc7c 100644
--- a/ci/buildserver-config.sh
+++ b/ci/buildserver-config.sh
@@ -21,4 +21,7 @@ export CARGO_REGISTRY_VOLUME_NAME="cargo-registry"
# buildserver-upload.sh should pick artifacts to upload
export UPLOAD_DIR="PLEASE CONFIGURE ME"
+export RELEASE_SCRIPT_DIR="PLEASE CONFIGURE ME"
+export RELEASE_INBOX_DIR="/tmp/release-inbox"
+
export CODE_SIGNING_KEY_FINGERPRINT="A1198702FC3E0A09A9AE5B75D5A1D4F266DE8DDF"
diff --git a/ci/buildserver-handle-release.sh b/ci/buildserver-handle-release.sh
new file mode 100644
index 0000000000..53ca8dcf9d
--- /dev/null
+++ b/ci/buildserver-handle-release.sh
@@ -0,0 +1,33 @@
+#!/usr/bin/env bash
+
+set -eu
+shopt -s nullglob globstar
+
+SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+cd "$SCRIPT_DIR"
+
+# shellcheck source=ci/buildserver-config.sh
+source "$SCRIPT_DIR/buildserver-config.sh"
+
+while true; do
+ sleep 10
+
+ for version_dir in "$RELEASE_INBOX_DIR"/*; do
+ version=$(basename "$version_dir")
+ pkg_name="MullvadVPN-$version"
+
+ for ext in .exe _arm64.exe _x64.exe _amd64.deb _arm64.deb _x86_64.rpm _aarch64.rpm .pkg; do
+ pkg_filename="$pkg_name$ext"
+ if ! [ -f "$version_dir/$pkg_filename" ]; then
+ continue 2
+ fi
+
+ "$RELEASE_SCRIPT_DIR/verify-artifacts.sh" "$pkg_filename"
+ done
+
+ ./release-scripts/3-verify-build "$version" --wait
+ ./release-scripts/publish-github-release.sh "$version" "$version_dir"
+
+ rm -f "$version_dir/$pkg_name"*
+ done
+done
diff --git a/ci/buildserver-upload.sh b/ci/buildserver-upload.sh
index ebfa923f53..0638aacf36 100755
--- a/ci/buildserver-upload.sh
+++ b/ci/buildserver-upload.sh
@@ -35,11 +35,13 @@ while true; do
continue
fi
+ release="false"
if [[ "$platform" == "installer-downloader" ]]; then
upload_path="desktop/installer-downloader"
elif [[ $version == *"-dev-"* ]]; then
upload_path="$platform/builds"
else
+ release="true"
upload_path="$platform/releases"
fi
@@ -60,11 +62,17 @@ while true; do
if [[ $filename == MullvadVPN-* || $filename == Install* ]]; then
rm -f "$file.asc"
- gpg -u $CODE_SIGNING_KEY_FINGERPRINT --pinentry-mode loopback --sign --armor --detach-sign "$file"
+ gpg -u "$CODE_SIGNING_KEY_FINGERPRINT" --pinentry-mode loopback --sign --armor --detach-sign "$file"
rsync_upload "$file.asc" "$file_upload_dir/" || continue
- rm -f "$file.asc"
fi
+ if [[ $release == "true" ]] && [[ $filename == MullvadVPN-* ]]; then
+ version_inbox_dir="$RELEASE_INBOX_DIR/$version"
+ mkdir -p "$version_inbox_dir"
+ cp "$file" "$file.asc" "$version_inbox_dir"
+ fi
+
+ rm -f "$file.asc"
# shellcheck disable=SC2216
yes | rm "$file"
done