Skip to content

Android Build for cozy on fix/remove-duplicate-android-manifest #157

Android Build for cozy on fix/remove-duplicate-android-manifest

Android Build for cozy on fix/remove-duplicate-android-manifest #157

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
- 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 }}
- 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)] }}
env:
BUILD_TOOLS_VERSION: "33.0.0"
- 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)] }}
env:
BUILD_TOOLS_VERSION: "33.0.0"
- 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