Skip to content

chore: bump version to 0.3.5 #6

chore: bump version to 0.3.5

chore: bump version to 0.3.5 #6

Workflow file for this run

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