From 4f38851880f8fb500768a1ade3edfde4e4205b61 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 1 Feb 2023 21:50:07 -0600 Subject: [PATCH] fix(CI): fix mobile build artifact with proper signing (#1504) --- .github/workflows/build-mobile.yml | 33 ++++++++++++++---------------- .gitignore | 3 ++- mobile/android/app/build.gradle | 25 +++++++++++----------- 3 files changed, 30 insertions(+), 31 deletions(-) diff --git a/.github/workflows/build-mobile.yml b/.github/workflows/build-mobile.yml index a8e29f632..071c89e6d 100644 --- a/.github/workflows/build-mobile.yml +++ b/.github/workflows/build-mobile.yml @@ -7,50 +7,47 @@ on: push: branches: [main] - jobs: build-sign-android: name: Build and sign Android - runs-on: ubuntu-latest - + runs-on: macos-12 + steps: - uses: actions/checkout@v3 - uses: actions/setup-java@v3 with: - distribution: 'zulu' + distribution: "zulu" java-version: "12.x" - cache: 'gradle' + cache: "gradle" - name: Setup Flutter SDK uses: subosito/flutter-action@v2 with: - channel: 'stable' - flutter-version: '3.3.10' + channel: "stable" + flutter-version: "3.3.10" cache: true - name: Create the Keystore - env: - KEYSTORE_BASE64: ${{ secrets.ANDROID_SIGN_KEY_CONTENT }} - run: | - # import keystore from secrets - echo $KEYSTORE_BASE64 | base64 -d > $RUNNER_TEMP/my_production.keystore + KEY_JKS: ${{ secrets.KEY_JKS }} + working-directory: ./mobile + run: echo $KEY_JKS | base64 -d > android/key.jks - - name: Restore packages + - name: Get Packages working-directory: ./mobile run: flutter pub get - name: Build Android App Bundle working-directory: ./mobile + env: + ALIAS: ${{ secrets.ALIAS }} + ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }} + ANDROID_STORE_PASSWORD: ${{ secrets.ANDROID_STORE_PASSWORD }} run: flutter build apk --release - - name: Sign Android App Bundle - working-directory: ./mobile - run: jarsigner -keystore $RUNNER_TEMP/my_production.keystore -storepass ${{ secrets.ANDROID_KEY_PASSWORD }} -keypass ${{ secrets.ANDROID_STORE_PASSWORD }} -sigalg SHA256withRSA -digestalg SHA-256 -signedjar build/app/outputs/apk/release/app-release-signed.apk build/app/outputs/apk/release/*.apk ${{ secrets.ALIAS }} - - name: Publish Android Artifact uses: actions/upload-artifact@v3 with: name: release-apk-signed - path: mobile/build/app/outputs/apk/release/app-release-signed.apk \ No newline at end of file + path: mobile/build/app/outputs/flutter-apk/app-release.apk diff --git a/.gitignore b/.gitignore index 32ef7ed92..83e90831d 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ uploads coverage mobile/gradle.properties -mobile/openapi/pubspec.lock \ No newline at end of file +mobile/openapi/pubspec.lock +mobile/*.jks diff --git a/mobile/android/app/build.gradle b/mobile/android/app/build.gradle index da8ed2071..3d3435a2a 100644 --- a/mobile/android/app/build.gradle +++ b/mobile/android/app/build.gradle @@ -57,21 +57,22 @@ android { versionName flutterVersionName } - // signingConfigs { - // release { - // keyAlias keystoreProperties['keyAlias'] - // keyPassword keystoreProperties['keyPassword'] - // storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null - // storePassword keystoreProperties['storePassword'] - // } - // } + signingConfigs { + release { + def keyAliasVal = System.getenv("ALIAS") + def keyPasswordVal = System.getenv("ANDROID_KEY_PASSWORD") + def storePasswordVal = System.getenv("ANDROID_STORE_PASSWORD") + + keyAlias keyAliasVal ? keyAliasVal : keystoreProperties['keyAlias'] + keyPassword keyPasswordVal ? keyPasswordVal : keystoreProperties['keyPassword'] + storeFile file("../key.jks") ? file("../key.jks") : file(keystoreProperties['storeFile']) + storePassword storePasswordVal ? storePasswordVal : keystoreProperties['storePassword'] + } + } buildTypes { release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - // signingConfig signingConfigs.release - signingConfig null + signingConfig signingConfigs.release } } }