Files
Radio/.github/workflows/gradle-publish.yml
T
2026-04-15 07:18:42 +02:00

83 lines
2.3 KiB
YAML

# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
name: Build and publish APK
on:
workflow_dispatch:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
permissions:
contents: write
env:
ANDROID_HOME: /usr/local/lib/android/sdk/
APK_PATH: app/build/outputs/apk/release/app-release-unsigned.apk
APKSIGNER: /usr/local/lib/android/sdk/build-tools/34.0.0/apksigner
ZIPALIGN: /usr/local/lib/android/sdk/build-tools/34.0.0/zipalign
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup JDK
uses: actions/setup-java@v5
with:
java-version: 17
distribution: adopt
cache: gradle
- name: Extract Build Metadata
id: meta
run: |
# Extract Version Name
VERSION_NAME=$(grep "versionName =" app/build.gradle.kts | awk -F\" '{print $2}')
echo "Found Version Name: $VERSION_NAME"
echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_ENV
- name: Cache Android SDK
uses: actions/cache@v5
with:
path: ${{ env.ANDROID_HOME }}
key: ${{ runner.os }}-android-sdk
- name: Setup Android SDK
uses: android-actions/setup-android@v4
with:
packages: 'ndk;29.0.14206865'
- name: Grant execute permission for gradlew
run: chmod +x ./gradlew
- name: Build unsigned APK
run: ./gradlew --no-daemon assembleRelease
- name: Check APK path
run: ls -R app/build/outputs/apk
- name: Zipalign APK
run: |
${{ env.ZIPALIGN }} -v -p 4 ${{ env.APK_PATH }} app-release-aligned.apk
- name: Sign APK
env:
SIGN_CERT: ${{ secrets.SIGN_CERT }}
SIGN_KEY: ${{ secrets.SIGN_KEY }}
run: |
echo "$SIGN_CERT" | base64 -d > cert.der
echo "$SIGN_KEY" | base64 -d > key.der
${{ env.APKSIGNER }} sign --key key.der --cert cert.der app-release-aligned.apk
rm cert.der key.der
mv app-release-aligned.apk Radio_${{ env.VERSION_NAME }}-release.apk
- name: Upload artifact
uses: actions/upload-artifact@v7
with:
name: Radio
path: Radio_${{ env.VERSION_NAME }}-release.apk