Skip to content

Android Build and Release on Tag #185

Android Build and Release on Tag

Android Build and Release on Tag #185

name: Android Build and Release on Tag
on:
create:
jobs:
build-and-release:
if: github.ref_type == 'tag' && startsWith(github.ref, 'refs/tags/release/')
runs-on: ubuntu-latest
env:
app_name: "cidemo"
CI: "true"
steps:
- name: Decode Keystore
id: decode_keystore
uses: timheuer/base64-to-file@v1.2
with:
fileName: 'release.jks'
encodedString: ${{ secrets.KEYSTORE }}
- uses: actions/checkout@v6
- name: set up JDK 21
uses: actions/setup-java@v5
with:
distribution: 'corretto'
java-version: '21'
cache: gradle
- name: Grant execute permission for gradlew
run: chmod +x ./gradlew
- name: Gradle build (signed release)
run: ./gradlew bundleRelease assembleRelease -PreleaseSigning=true
env:
KEYSTORE_LOCATION: ${{ steps.decode_keystore.outputs.filePath }}
CI_ANDROID_KEYSTORE_ALIAS: ${{ secrets.CI_ANDROID_KEYSTORE_ALIAS }}
CI_ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD: ${{ secrets.CI_ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD }}
CI_ANDROID_KEYSTORE_PASSWORD: ${{ secrets.CI_ANDROID_KEYSTORE_PASSWORD }}
- name: Extract Version Number
run: echo "version=${GITHUB_REF#refs/tags/release/}" >> $GITHUB_ENV
- name: Prepare Release Notes
id: release_notes
run: |
file_path="release_notes/release_note_${{ env.version }}.md"
if [ -f "$file_path" ]; then
echo "Using release notes from $file_path"
content=$(cat "$file_path")
else
echo "Using default release notes"
content="Description of the release for version ${{ env.version }}"
fi
echo "release_body<<EOF" >> $GITHUB_OUTPUT
echo "$content" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.PAT_FOR_RELEASES }}
with:
tag_name: ${{ github.ref_name }}
release_name: Release ${{ env.version }}
draft: false
prerelease: false
body: ${{ steps.release_notes.outputs.release_body }}
commitish: ${{ github.sha }}
- name: Upload Release Asset Mapping
if: ${{ vars.EXPORT_MAPPING == 'true' }}
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.PAT_FOR_RELEASES }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./app/build/outputs/mapping/release/mapping.txt
asset_name: mapping-${{ env.version }}.txt
asset_content_type: text/plain
- name: Find APK file
run: |
apk_path=$(find ./app/build/outputs/apk/release -name "${{ env.app_name }}-*.apk" | head -n 1)
echo "apk_path=$apk_path" >> $GITHUB_ENV
- name: Upload Release Asset APK
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.PAT_FOR_RELEASES }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ env.apk_path }}
asset_name: ${{ env.app_name }}-${{ env.version }}.apk
asset_content_type: application/vnd.android.package-archive
- name: Find AAB file
run: |
aab_path=$(find ./app/build/outputs/bundle/release -name "${{ env.app_name }}-*.aab" | head -n 1)
echo "aab_path=$aab_path" >> $GITHUB_ENV
- name: Upload Release Asset AAB
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.PAT_FOR_RELEASES }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ env.aab_path }}
asset_name: ${{ env.app_name }}-${{ env.version }}.aab
asset_content_type: application/vnd.android.package-archive