@@ -3,12 +3,18 @@ name: Android release
33on :
44 release :
55 types : [published]
6+ workflow_dispatch :
7+ inputs :
8+ tag :
9+ description : Existing release tag to rebuild
10+ required : true
11+ type : string
612
713permissions :
814 contents : write
915
1016concurrency :
11- group : android-release-${{ github.event.release.id }}
17+ group : android-release-${{ github.event.release.id || inputs.tag }}
1218 cancel-in-progress : false
1319
1420jobs :
@@ -17,13 +23,20 @@ jobs:
1723 runs-on : ubuntu-24.04
1824 timeout-minutes : 30
1925 env :
20- PULSE_RELEASE_TAG : ${{ github.event.release.tag_name }}
26+ PULSE_RELEASE_TAG : ${{ github.event.release.tag_name || inputs.tag }}
2127
2228 steps :
2329 - name : Check out release
2430 uses : actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
2531 with :
26- ref : ${{ github.event.release.tag_name }}
32+ ref : ${{ github.event.release.tag_name || inputs.tag }}
33+
34+ - name : Pin web build version
35+ shell : bash
36+ run : |
37+ if ! grep -q 'version:' svelte.config.js; then
38+ perl -0pi -e 's/adapter: adapter\(\),/adapter: adapter(),\n version: { name: "$ENV{PULSE_RELEASE_TAG}" },/' svelte.config.js
39+ fi
2740
2841 - name : Set up Bun
2942 uses : oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
6376 working-directory : android
6477 run : ./gradlew assembleRelease --no-daemon
6578
79+ - name : Install reproducible signing tools
80+ run : sdkmanager "build-tools;34.0.0"
81+
6682 - name : Sign and verify APK
6783 id : sign
6884 env :
@@ -75,25 +91,26 @@ jobs:
7591 keystore="$RUNNER_TEMP/pulse-release.p12"
7692 printf '%s' "$PULSE_ANDROID_KEYSTORE_BASE64" | base64 --decode > "$keystore"
7793
78- safe_tag="${GITHUB_REF_NAME //\//-}"
94+ safe_tag="${PULSE_RELEASE_TAG //\//-}"
7995 apk="$RUNNER_TEMP/Pulse-$safe_tag.apk"
8096 unsigned_apk="android/app/build/outputs/apk/release/app-release-unsigned.apk"
81- build_tools="$ANDROID_HOME/build-tools/36.0.0"
97+ align_tools="$ANDROID_HOME/build-tools/36.0.0"
98+ sign_tools="$ANDROID_HOME/build-tools/34.0.0"
8299
83- "$build_tools /zipalign" -f -p 4 "$unsigned_apk" "$apk"
84- "$build_tools /apksigner" sign \
100+ "$align_tools /zipalign" -f -p 4 "$unsigned_apk" "$apk"
101+ "$sign_tools /apksigner" sign \
85102 --ks "$keystore" \
86103 --ks-type PKCS12 \
87104 --ks-key-alias pulse \
88105 --ks-pass env:PULSE_ANDROID_KEYSTORE_PASSWORD \
89106 --key-pass env:PULSE_ANDROID_KEYSTORE_PASSWORD \
90107 "$apk"
91- "$build_tools /apksigner" verify --verbose --print-certs "$apk"
108+ "$sign_tools /apksigner" verify --verbose --print-certs "$apk"
92109
93110 echo "apk=$apk" >> "$GITHUB_OUTPUT"
94111
95112 - name : Attach APK to release
96113 env :
97114 GH_TOKEN : ${{ github.token }}
98115 APK_PATH : ${{ steps.sign.outputs.apk }}
99- run : gh release upload "$GITHUB_REF_NAME " "$APK_PATH" --clobber
116+ run : gh release upload "$PULSE_RELEASE_TAG " "$APK_PATH" --clobber
0 commit comments