Repository navigation
chore: bump version to 0.3.5 #6
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Android Release | |
| on: | |
| push: | |
| tags: | |
| - "v*.*.*" | |
| permissions: | |
| contents: write | |
| concurrency: | |
| group: android-release-${{ github.ref }} | |
| cancel-in-progress: false | |
| jobs: | |
| build-and-release: | |
| runs-on: ubuntu-latest | |
| env: | |
| JAVA_VERSION: "21" | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Set up JDK | |
| uses: actions/setup-java@v5 | |
| with: | |
| distribution: temurin | |
| java-version: ${{ env.JAVA_VERSION }} | |
| - name: Set up Go | |
| uses: actions/setup-go@v6 | |
| with: | |
| go-version-file: '.go-version' | |
| - name: Set up Android SDK | |
| uses: android-actions/setup-android@v4 | |
| - name: Set up Gradle cache | |
| uses: gradle/actions/setup-gradle@v6 | |
| - name: Validate signing secrets | |
| env: | |
| ANDROID_SIGNING_KEYSTORE_BASE64: ${{ secrets.ANDROID_SIGNING_KEYSTORE_BASE64 }} | |
| ANDROID_SIGNING_STORE_PASSWORD: ${{ secrets.ANDROID_SIGNING_STORE_PASSWORD }} | |
| ANDROID_SIGNING_KEY_ALIAS: ${{ secrets.ANDROID_SIGNING_KEY_ALIAS }} | |
| ANDROID_SIGNING_KEY_PASSWORD: ${{ secrets.ANDROID_SIGNING_KEY_PASSWORD }} | |
| run: | | |
| set -euo pipefail | |
| test -n "$ANDROID_SIGNING_KEYSTORE_BASE64" | |
| test -n "$ANDROID_SIGNING_STORE_PASSWORD" | |
| test -n "$ANDROID_SIGNING_KEY_ALIAS" | |
| test -n "$ANDROID_SIGNING_KEY_PASSWORD" | |
| - name: Decode keystore | |
| env: | |
| ANDROID_SIGNING_KEYSTORE_BASE64: ${{ secrets.ANDROID_SIGNING_KEYSTORE_BASE64 }} | |
| run: | | |
| set -euo pipefail | |
| KEYSTORE_PATH="$RUNNER_TEMP/android-release-signing.jks" | |
| printf '%s' "$ANDROID_SIGNING_KEYSTORE_BASE64" | base64 --decode > "$KEYSTORE_PATH" | |
| test -s "$KEYSTORE_PATH" | |
| chmod 600 "$KEYSTORE_PATH" | |
| echo "ANDROID_SIGNING_KEYSTORE_FILE=$KEYSTORE_PATH" >> "$GITHUB_ENV" | |
| - name: Build signed release APKs (both flavors) | |
| env: | |
| ANDROID_SIGNING_STORE_PASSWORD: ${{ secrets.ANDROID_SIGNING_STORE_PASSWORD }} | |
| ANDROID_SIGNING_KEY_ALIAS: ${{ secrets.ANDROID_SIGNING_KEY_ALIAS }} | |
| ANDROID_SIGNING_KEY_PASSWORD: ${{ secrets.ANDROID_SIGNING_KEY_PASSWORD }} | |
| run: | | |
| set -euo pipefail | |
| ./gradlew --no-daemon clean assembleVanillaRelease assembleBundledRelease | |
| - name: Collect release APKs | |
| id: collect_apks | |
| run: | | |
| set -euo pipefail | |
| mapfile -t apks < <(find app/build/outputs/apk -type f -path '*/release/*.apk' | sort) | |
| if [ ${#apks[@]} -eq 0 ]; then | |
| echo "No APK files were produced." | |
| exit 1 | |
| fi | |
| if find app/build/outputs/apk -type f -path '*/release/*unsigned*.apk' | grep -q .; then | |
| echo "Unsigned APKs were found in release outputs." | |
| find app/build/outputs/apk -type f -path '*/release/*unsigned*.apk' | |
| exit 1 | |
| fi | |
| mkdir -p release-assets | |
| for apk in "${apks[@]}"; do | |
| cp "$apk" release-assets/ | |
| done | |
| { | |
| echo "files<<EOF" | |
| find release-assets -type f -name '*.apk' | sort | |
| echo "EOF" | |
| } >> "$GITHUB_OUTPUT" | |
| - name: Generate SHA256 checksums | |
| run: | | |
| set -euo pipefail | |
| (cd release-assets && sha256sum *.apk > SHA256SUMS.txt) | |
| - name: Publish GitHub Release | |
| uses: softprops/action-gh-release@v3 | |
| with: | |
| name: Restoid ${{ github.ref_name }} | |
| tag_name: ${{ github.ref_name }} | |
| generate_release_notes: true | |
| files: | | |
| ${{ steps.collect_apks.outputs.files }} | |
| release-assets/SHA256SUMS.txt | |
| - name: Remove signing keystore | |
| if: always() | |
| run: | | |
| if [ -n "${ANDROID_SIGNING_KEYSTORE_FILE:-}" ] && [ -f "$ANDROID_SIGNING_KEYSTORE_FILE" ]; then | |
| shred -u "$ANDROID_SIGNING_KEYSTORE_FILE" || rm -f "$ANDROID_SIGNING_KEYSTORE_FILE" | |
| fi |