Android Build for cozy on release/1.1.23 #139
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 Build | |
run-name: Android Build for ${{ inputs.brand }} on ${{github.ref_name}} | |
on: | |
workflow_dispatch: | |
inputs: | |
logLevel: | |
description: 'Log level' | |
required: true | |
default: 'warning' | |
brand: | |
description: 'Brand to publish' | |
required: true | |
default: 'cozy' | |
type: choice | |
options: | |
- cozy | |
- mabulle | |
jobs: | |
android-build: | |
name: Android Build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out Git repository | |
uses: actions/checkout@v3 | |
- name: Get short SHA | |
id: vars | |
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT | |
- name: Set NodeJS version | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
- name: Set up our JDK environment | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'adopt-hotspot' | |
java-version: '11' | |
- name: Fixing Android Build Tool Issue | |
run: | | |
cd $ANDROID_HOME/build-tools/33.0.0 | |
mv d8 dx | |
cd lib | |
mv d8.jar dx.jar | |
- name: Get yarn cache directory path | |
id: yarn-cache-dir-path | |
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT | |
- name: Restore node_modules from cache | |
uses: actions/cache@v3 | |
id: yarn-cache | |
with: | |
path: ${{ steps.yarn-cache-dir-path.outputs.dir }} | |
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-yarn- | |
- name: Install dependencies | |
run: yarn install --frozen-lockfile | |
- name: Cache Gradle Wrapper | |
uses: actions/cache@v3 | |
with: | |
path: ~/.gradle/wrapper | |
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }} | |
- name: Cache Gradle Dependencies | |
uses: actions/cache@v3 | |
with: | |
path: ~/.gradle/caches | |
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }} | |
restore-keys: | | |
${{ runner.os }}-gradle-caches- | |
- name: 'Create env file' | |
run: | | |
touch .env | |
echo ANDROID_SAFETY_NET_API_KEY=${{ secrets.ANDROID_SAFETY_NET_API_KEY }} >> .env | |
- name: Set white label brand | |
run: yarn brand:configure:${{ inputs.brand }} --force | |
- name: Make Gradlew Executable | |
run: cd android && chmod +x ./gradlew | |
- name: Generate App APK | |
run: | | |
cd android && ./gradlew assembleRelease --no-daemon | |
env: | |
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
ANDROID_SAFETY_NET_API_KEY: ${{ secrets.ANDROID_SAFETY_NET_API_KEY }} | |
- name: Clean Dev APK names and add Commit SHA | |
run: for f in android/app/build/outputs/apk/dev/release/*unsigned.apk; do mv "$f" "$(echo "$f" | sed s/unsigned/${{ inputs.brand }}-${{ steps.vars.outputs.sha_short }}/)"; done | |
- name: Clean Prod APK names and add Commit SHA | |
run: for f in android/app/build/outputs/apk/prod/release/*unsigned.apk; do mv "$f" "$(echo "$f" | sed s/unsigned/${{ inputs.brand }}-${{ steps.vars.outputs.sha_short }}/)"; done | |
- name: Sign Dev APK | |
id: sign_app_dev | |
uses: r0adkll/sign-android-release@v1 | |
with: | |
releaseDirectory: android/app/build/outputs/apk/dev/release | |
signingKeyBase64: ${{ secrets[format('{0}_ANDROID_SIGNING_KEY', inputs.brand)] }} | |
alias: ${{ secrets[format('{0}_ANDROID_ALIAS', inputs.brand)] }} | |
keyStorePassword: ${{ secrets[format('{0}_ANDROID_KEY_STORE_PASSWORD', inputs.brand)] }} | |
keyPassword: ${{ secrets[format('{0}_ANDROID_KEY_PASSWORD', inputs.brand)] }} | |
- name: Upload Dev artifact to GitHub | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Signed Android Package Dev Env ${{ inputs.brand }} | |
path: | | |
android/app/build/outputs/apk/dev/release/*-signed.apk | |
- name: Sign Prod APK | |
id: sign_app_prod | |
uses: r0adkll/sign-android-release@v1 | |
with: | |
releaseDirectory: android/app/build/outputs/apk/prod/release | |
signingKeyBase64: ${{ secrets[format('{0}_ANDROID_SIGNING_KEY', inputs.brand)] }} | |
alias: ${{ secrets[format('{0}_ANDROID_ALIAS', inputs.brand)] }} | |
keyStorePassword: ${{ secrets[format('{0}_ANDROID_KEY_STORE_PASSWORD', inputs.brand)] }} | |
keyPassword: ${{ secrets[format('{0}_ANDROID_KEY_PASSWORD', inputs.brand)] }} | |
- name: Upload Prod artifact to GitHub | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Signed Android Package Prod Env ${{ inputs.brand }} | |
path: | | |
android/app/build/outputs/apk/prod/release/*-signed.apk |