Skip to content

Build Release APK

Build Release APK #17

Workflow file for this run

name: Build Release APK
on:
workflow_dispatch:
jobs:
build-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: gradle
- name: Make Gradle executable
run: chmod +x gradlew
- name: Set up Android SDK
uses: android-actions/setup-android@v3
- name: Install Android Build Tools 35.0.0
run: yes | sdkmanager "build-tools;35.0.0" "platforms;android-35"
- name: Build release APK
run: ./gradlew assembleRelease
- name: Sign APK
uses: r0adkll/sign-android-release@v1
id: sign_release
with:
releaseDirectory: app/build/outputs/apk/release
signingKeyBase64: ${{ secrets.KEY_STORE_BASE64 }}
alias: ${{ secrets.ALIAS }}
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_PASSWORD }}
env:
BUILD_TOOLS_VERSION: 35.0.0
- name: Extract VERSION from app/build.gradle.kts
run: |
VERSION_NAME=$(grep 'versionName' app/build.gradle.kts | sed 's/.*versionName = "\(.*\)".*/\1/')
echo "VERSION=$VERSION_NAME" >> $GITHUB_ENV
- name: Copy signed APK to workspace with versioned name
run: cp "${{ steps.sign_release.outputs.signedReleaseFile }}" "${{ github.workspace }}/zero_${{ env.VERSION }}.apk"
- name: Upload APK artifact
uses: actions/upload-artifact@v4
with:
name: app-release
path: ${{ github.workspace }}/zero_${{ env.VERSION }}.apk
- name: Generate changelog
run: |
PREVIOUS_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
if [ -z "$PREVIOUS_TAG" ]; then
CHANGELOG=$(git log --pretty=format:"- %s" --no-merges)
else
CHANGELOG=$(git log ${PREVIOUS_TAG}..HEAD --pretty=format:"- %s" --no-merges)
fi
echo "CHANGELOG<<EOF" >> $GITHUB_ENV
echo "$CHANGELOG" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Release
uses: softprops/action-gh-release@v2
with:
files: ${{ github.workspace }}/zero_${{ env.VERSION }}.apk
tag_name: v${{ env.VERSION }}
body: |
## What's Changed
${{ env.CHANGELOG }}