Android Release Build #20
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Android Release Build | |
on: | |
workflow_dispatch: | |
inputs: | |
name: | |
description: "Android APK Release" | |
default: "Android Release" | |
required: true | |
push: | |
tags: | |
- 'v*' | |
permissions: | |
contents: write | |
jobs: | |
build: | |
name: Build APK | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Set up JDK | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: '17' | |
# Load google-services.json | |
- name: Decode google-services.json and google maps api key and add to system env | |
env: | |
GOOGLE_MAPS_API_KEY: ${{secrets.GOOGLE_MAPS_API_KEY}} | |
GOOGLE_SERVICES: ${{ secrets.GOOGLE_SERVICES }} | |
run: | | |
echo "$GOOGLE_SERVICES" | base64 --decode > ./app/google-services.json | |
MAPS_API_KEY=$(echo "$GOOGLE_MAPS_API_KEY" | base64 --decode) | |
echo "MAPS_API_KEY=$MAPS_API_KEY" >> $GITHUB_ENV | |
- name: Set permissions for google-services.json | |
run: chmod 644 ./app/google-services.json | |
# Generate a test keystore if not available | |
- name: Generate Release Keystore if Missing | |
run: | | |
if [ ! -f "~/test-release.keystore" ]; then | |
keytool -genkey -v -keystore ~/test-release.keystore -alias testalias \ | |
-storepass testpass -keypass testpass -keyalg RSA -validity 10000 \ | |
-dname "CN=Test Release,O=Testing,C=US" | |
fi | |
# We must get the full path because the gradle will overwrite ~/ | |
- name: Get full path of keystore and add to environment | |
id: get_keystore_path | |
run: | | |
KEYS_PATH=$(readlink -f ~/test-release.keystore) | |
echo "KEYSTORE_FILE=$KEYS_PATH" >> $GITHUB_ENV | |
- name: Build APK Release with Custom Key | |
env: | |
KEYSTORE_PASSWORD: testpass | |
KEY_ALIAS: testalias | |
KEY_PASSWORD: testpass | |
run: | | |
echo "Keystore_file is: $KEYSTORE_FILE" && \ | |
echo "readlink of keystore is:" \ | |
&& echo $(readlink -f ~/test-release.keystore) && ./gradlew clean assembleRelease --info | |
- name: Extract SHA-1 Fingerprint from Release Keystore | |
id: extract_sha | |
run: | | |
SHA1=$(keytool -list -v \ | |
-keystore ~/test-release.keystore \ | |
-alias testalias \ | |
-storepass testpass | grep 'SHA1' | awk '{print $2}') | |
echo "SHA1=${SHA1}" >> $GITHUB_ENV | |
echo "SHA1 fingerprint: ${SHA1}" | |
- name: List APK files | |
run: | | |
find app/build/outputs/apk -type f | |
- name: Upload APK | |
uses: actions/upload-artifact@v3 | |
with: | |
name: "${{ github.event.inputs.name }}-Release-APK" | |
path: app/build/outputs/apk/release/*.apk | |
- name: Create GitHub release | |
id: create_release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ github.run_number }} | |
release_name: ${{ github.event.inputs.name }} (#${{ github.run_number }}) | |
draft: false | |
prerelease: false | |
- name: Upload Release Asset | |
id: upload-release-asset | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: app/build/outputs/apk/release/app-release.apk | |
asset_name: TravelPouch-Release.apk | |
asset_content_type: application/vnd.android.package-archive |