From 9bc7b9856c51fa3392a862244a7d98c9117a306f Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Tue, 20 Apr 2021 20:13:36 +0200 Subject: [PATCH] Start implementing automatic builds --- .github/workflows/android-release.yml | 58 +++++++++++++++++++ .gitignore | 5 +- android/.gitignore | 2 +- android/app/build.gradle | 4 +- android/app/src/main/AndroidManifest.xml | 6 ++ android/fastlane/Appfile | 2 +- android/fastlane/envfiles/decrypt_secrets.sh | 16 +++++ android/fastlane/envfiles/key.properties.gpg | Bin 0 -> 621 bytes android/fastlane/envfiles/keys.jks.gpg | Bin 0 -> 2184 bytes android/fastlane/envfiles/playstore.json.gpg | Bin 0 -> 1730 bytes android/fastlane/report.xml | 4 +- pubspec.yaml | 2 +- 12 files changed, 90 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/android-release.yml create mode 100644 android/fastlane/envfiles/decrypt_secrets.sh create mode 100644 android/fastlane/envfiles/key.properties.gpg create mode 100644 android/fastlane/envfiles/keys.jks.gpg create mode 100644 android/fastlane/envfiles/playstore.json.gpg diff --git a/.github/workflows/android-release.yml b/.github/workflows/android-release.yml new file mode 100644 index 00000000..232eab64 --- /dev/null +++ b/.github/workflows/android-release.yml @@ -0,0 +1,58 @@ +name: Google Play release +on: + push: + branches: [ master ] + +jobs: + deploy_android: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup Java + uses: actions/setup-java@v1 + with: + java-version: 12.x + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '2.7' + + - name: Decrypt config files + run: cd ./android/fastlane/envfiles && chmod +x ./decrypt_secrets.sh && ./decrypt_secrets.sh + env: + DECRYPTKEY_PLAYSTORE: ${{ secrets.DECRYPTKEY_PLAYSTORE }} + DECRYPTKEY_PLAYSTORE_SIGNING_KEY: ${{ secrets.DECRYPTKEY_PLAYSTORE_SIGNING_KEY }} + DECRYPTKEY_PROPERTIES: ${{ secrets.DECRYPTKEY_PROPERTIES }} + + - name: Setup Flutter + uses: subosito/flutter-action@v1 + with: + channel: 'stable' + + - name: Install Flutter dependencies + run: flutter pub get + + - name: Generated translation files + run: flutter gen-l10n + + - name: Build AAB + run: flutter build appbundle --release --no-sound-null-safety + env: + WGER_API_KEY: ${{ secrets.WGER_API_KEY }} + + - name: Run Fastlane + uses: maierj/fastlane-action@v2.0.0 + with: + lane: update_alpha + subdirectory: android + + # subdirectory: packages/smooth_app/android + # env: + # SIGN_STORE_PATH: ./../fastlane/envfiles/keystore.jks + # SIGN_STORE_PASSWORD: ${{ secrets.SIGN_STORE_PASSWORD }} + # SIGN_KEY_ALIAS: ${{ secrets.SIGN_KEY_ALIAS }} + # SIGN_KEY_PASSWORD: ${{ secrets.SIGN_KEY_PASSWORD }} + diff --git a/.gitignore b/.gitignore index f78f693b..8317ac5e 100644 --- a/.gitignore +++ b/.gitignore @@ -42,5 +42,6 @@ app.*.map.json # Exceptions to above rules. !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages -/android/fastlane/playstore.json -/android/app/wger.properties +/android/fastlane/envfiles/playstore.json +/android/fastlane/envfiles/wger.properties +/android/fastlane/envfiles/keys.jks diff --git a/android/.gitignore b/android/.gitignore index 0a741cb4..60658c9a 100644 --- a/android/.gitignore +++ b/android/.gitignore @@ -8,4 +8,4 @@ GeneratedPluginRegistrant.java # Remember to never publicly share your keystore. # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app -key.properties +fastlane/envfiles/key.properties diff --git a/android/app/build.gradle b/android/app/build.gradle index 712fed18..30d91864 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -27,14 +27,14 @@ apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" // Keys for the android play store def keystoreProperties = new Properties() -def keystorePropertiesFile = rootProject.file('app/key.properties') +def keystorePropertiesFile = rootProject.file('fastlane/envfiles/key.properties') if (keystorePropertiesFile.exists()) { keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) } // Key for wger.de REST API def wgerProperties = new Properties() -def localMapsPropertiesFile = rootProject.file('app/wger.properties') +def localMapsPropertiesFile = rootProject.file('fastlane/envfiles/wger.properties') if (localMapsPropertiesFile.exists()) { project.logger.info('Load maps properties from local file') localMapsPropertiesFile.withReader('UTF-8') { reader -> diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index cb64563b..413f6120 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -7,6 +7,12 @@ FlutterApplication and put your custom class here. --> + + + =P$N$pl0k(~<3ek8&=DKt0h-O!8AU|(YkD|-iB#yx? z2h<4}X#{0uj81pw!=?vKJ;_FaAIT=HT#IN z?m9{?<X8x(Uh+o`z7H)OgT7K z5T@y)W9+?blkYBC5Nb^idzI0+VD7s6%Llh*lSRUefdoIc0Fan|fRHi@_6e?*4ElXB zO^@C6)0rWZC*063Y(;;PyGhTzXqz1aquh`K_oz|-*~qO|D9SI5G$-S~=Mi%2IF$7o z^PYwue|=`+y||1$bL)3J^cf_$Z4jaOIJ)j_-ccxg5Gdo#koA4ge^8v*sQsuUbkDk? z$4g3klb#!o{oWo=IqhZyk+;%oQ($ehH~~=Pt#)vgx*xtT$c)HWu)$KrAcC2Xu3rST zNf!QL8mYu~I{dk=g{~6QTN>sWHK|oLQWCfo-@>NLO5jvmR4BVgU3oh|(3(BiuF?aw zJdO`aK8^J$tHQ}EfpOvueiWq2lx2?F(?`C04eJq(|NXnlAE0a*He-?p+BlmUZ9j&4 z7Z;Qv!2-cKA2rU1OdsbgTfUu*nE&AMjbOILI|W;n1uOk|VB)F`X4Kp4DNxXs8MTNl zV5VBq4qT)qv@^M|jWl+UZF!jO>qn3t>g73l#!6ziO;BXf8n-D5;gNDpWnF%ZaudV+ H(!;Q)a^y8` literal 0 HcmV?d00001 diff --git a/android/fastlane/envfiles/keys.jks.gpg b/android/fastlane/envfiles/keys.jks.gpg new file mode 100644 index 0000000000000000000000000000000000000000..5c88dfbf1c33b756f396fed6929ca664b2507637 GIT binary patch literal 2184 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 YO=*J6=EKz+w0OQ;>GCFlg}u#vkYsmV`v3p{ literal 0 HcmV?d00001 diff --git a/android/fastlane/report.xml b/android/fastlane/report.xml index c165153e..0e733bef 100644 --- a/android/fastlane/report.xml +++ b/android/fastlane/report.xml @@ -5,12 +5,12 @@ - + - + diff --git a/pubspec.yaml b/pubspec.yaml index 4ce64429..da0c9b80 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 0.2.0+10 +version: 0.2.0+11 environment: sdk: '>=2.12.0 <3.0.0'