Skip to content

Android Release Build #20

Android Release Build

Android Release Build #20

Workflow file for this run

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