Browse Source

chore(mobile): Build and sign APK in GitHub Action (#1471)

* chore(mobile): Build and sign APK in GitHUb Action

* fix-1: working directory

* fix-2: working directory

* fix-3: key ALIAS

* fix-4: build apk

* fix-5: naming
Alex 2 years ago
parent
commit
1a640609c7
3 changed files with 66 additions and 10 deletions
  1. 55 0
      .github/workflows/build-mobile.yml
  2. 1 1
      .gitignore
  3. 10 9
      mobile/android/app/build.gradle

+ 55 - 0
.github/workflows/build-mobile.yml

@@ -0,0 +1,55 @@
+name: Build Mobile
+
+on:
+  workflow_dispatch:
+  pull_request:
+  push:
+    branches: [main]
+
+
+jobs:
+  build-sign-android:
+    name: Build and sign Android
+    runs-on: ubuntu-latest
+    
+    steps:
+      - uses: actions/checkout@v2
+
+      - uses: actions/setup-java@v3
+        with:
+          distribution: 'zulu'
+          java-version: "12.x"
+          cache: 'gradle' 
+
+      - name: Setup Flutter SDK
+        uses: subosito/flutter-action@v2
+        with:
+          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
+
+      - name: Restore packages
+        working-directory: ./mobile
+        run: flutter pub get
+
+      - name: Build Android App Bundle
+        working-directory: ./mobile
+        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@v1
+        with:
+          name: release-apk-signed
+          path: mobile/build/app/outputs/apk/release/app-release-signed.apk

+ 1 - 1
.gitignore

@@ -8,4 +8,4 @@ uploads
 coverage
 
 mobile/gradle.properties
-mobile/openapi/pubspec.lock
+mobile/openapi/pubspec.lock

+ 10 - 9
mobile/android/app/build.gradle

@@ -57,20 +57,21 @@ android {
         versionName flutterVersionName
     }
 
-   signingConfigs {
-       release {
-           keyAlias keystoreProperties['keyAlias']
-           keyPassword keystoreProperties['keyPassword']
-           storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
-           storePassword keystoreProperties['storePassword']
-       }
-   }
+  //  signingConfigs {
+  //      release {
+  //          keyAlias keystoreProperties['keyAlias']
+  //          keyPassword keystoreProperties['keyPassword']
+  //          storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
+  //          storePassword 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 signingConfigs.release
+            signingConfig null
         }
     }
 }