Skip to content

ci: trigger signed 0.7.1 build #1

ci: trigger signed 0.7.1 build

ci: trigger signed 0.7.1 build #1

name: Build signed 0.7.1 once
on:
push:
branches:
- 'fix/real-device-parsing-dedupe-v0.7.1'
paths:
- '.github/workflows/release-v0.7.1-once.yml'
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-latest
env:
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }}
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
- name: Set up Android SDK
uses: android-actions/setup-android@v3
- name: Install Android 35 platform
run: sdkmanager "platforms;android-35" "build-tools;35.0.0"
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4
with:
gradle-version: '8.10.2'
- name: Restore release keystore
shell: bash
env:
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
run: |
set -euo pipefail
test -n "$ANDROID_KEYSTORE_BASE64"
umask 077
printf '%s' "$ANDROID_KEYSTORE_BASE64" | base64 --decode > "$RUNNER_TEMP/courierpilot-release.jks"
echo "ANDROID_KEYSTORE_PATH=$RUNNER_TEMP/courierpilot-release.jks" >> "$GITHUB_ENV"
- name: Test and build signed release APK
run: gradle testDebugUnitTest assembleRelease --stacktrace
- name: Verify permanent release certificate
shell: bash
run: |
set -euo pipefail
APK="app/build/outputs/apk/release/app-release.apk"
APKSIGNER="$ANDROID_HOME/build-tools/35.0.0/apksigner"
EXPECTED_CERT_SHA256="74556417f1289281bcaf1a2c6f3f4aa119db24b079a13759a583c3cc66796b70"
"$APKSIGNER" verify --verbose --print-certs "$APK"
ACTUAL_CERT_SHA256="$($APKSIGNER verify --print-certs "$APK" | sed -n 's/^Signer #1 certificate SHA-256 digest: //p')"
test "$ACTUAL_CERT_SHA256" = "$EXPECTED_CERT_SHA256"
sha256sum "$APK"
- name: Upload signed release APK
uses: actions/upload-artifact@v4
with:
name: courierpilot-0.7.1-signed
path: app/build/outputs/apk/release/app-release.apk
if-no-files-found: error
retention-days: 30