Skip to content

Update Android release workflow to validate changelog early #22

Update Android release workflow to validate changelog early

Update Android release workflow to validate changelog early #22

Workflow file for this run

name: Android CI/CD
on:
push:
tags:
- 'v*'
- 'test_*'
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 1
- name: Extract Version Code and find Changelog File
id: find_changelog_file
run: |
# Find version code in build.gradle.kts
VERSION_CODE=$(grep "versionCode" app/build.gradle.kts | awk '{ print $3 }')
echo "Version Code: $VERSION_CODE"
# Check if changelog file exists in fastlane
CHANGELOG_FILE="fastlane/metadata/android/en-US/changelogs/${VERSION_CODOE}.txt"
if [ ! -f "$CHANGELOG_FILE" ]; then
echo "Changelog file not found: $CHANGELOG_FILE"
exit 1
fi
# output filename to GITHUB_OUTPUT
echo "CHANGELOG_FILE=$CHANGELOG_FILE" >> $GITHUB_OUTPUT
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: gradle
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build Release APK
run: ./gradlew assembleRelease
- name: Sign APK
uses: r0adkll/sign-android-release@v1
id: sign_app
env:
BUILD_TOOLS_VERSION: "34.0.0"
with:
releaseDirectory: app/build/outputs/apk/release
signingKeyBase64: ${{ secrets.SIGNING_KEY }}
alias: ${{ secrets.KEY_ALIAS }}
keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_PASSWORD }}
output: LocalShare-${{ github.ref_name }}.apk
- name: Rename and Prepare Files
run: |
# rename unsigned apk
mv app/build/outputs/apk/release/app-release-unsigned.apk \
app/build/outputs/apk/release/LocalShare-${{ github.ref_name }}-unsigned.apk
# rename signed apk
mv ${{ steps.sign_app.outputs.signedReleaseFile }} \
app/build/outputs/apk/release/LocalShare-${{ github.ref_name }}.apk
- name: Upload Release Assets
uses: softprops/action-gh-release@v2
with:
body_path: ${{ needs.build.outputs.CHANGELOG_FILE }}
files: |
app/build/outputs/apk/release/LocalShare-${{ github.ref_name }}.apk
app/build/outputs/apk/release/LocalShare-${{ github.ref_name }}-unsigned.apk
fail_on_unresolved_entities: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}