From 75dc9aaf13cd421ff9a2bc1f704ecd45519d20f8 Mon Sep 17 00:00:00 2001 From: Vadim <44135514+vodemn@users.noreply.github.com> Date: Tue, 21 Jan 2025 19:43:14 +0100 Subject: [PATCH] Added builds to CI (#208) * Update README.md * Set exact Flutter version for workflows * Added stub `DefaultFirebaseOptions` * Fixed `rm` * Removed `rm` * Update .gitignore * Added readable name to ci workflow * Build -> Development * Update ci.yml * Extract merged native libraries * More descriptive run name * Delete no longer used artifacts * Replaced "Build ..." flow with "Create release" * renamed other flows * try using script for iap stub * typo * typo * typo * removed working dir * added comment to stub_iap.sh * checkout first * increment build number by script * Update increment_build_number.sh * fixed iap repo * stub * updated stub script to work with tags * depend on step conclusion * check PR number * run integration tests before build * reuse Build Android workflow * added stage backend option * reuse Build iOS workflow * temporeraly skip release jobs * [ios] use distribution profile for release builds * temporary skip tests * typo * checkout actions * incremented macos runner version * Restore GoogleService-Info.plist * Restore firebase_app_id_file.json * style * separated android and ios builds * fixed invalid workflow * simplified release workflow tree * fixed android keystore path * enabled integration tests * added option to skip integration tests * fixed android folders... * enabled releases * increment build number for ios * upload ipa to app store * test ipa upload * typo * try to force ipa upload * removed flavor from ipa artefact name * try manual ipa upload * switched to ubuntu for upload * decode to repo * Update create_release.yml * auth with username + password * reverted temporary settings * typo * disable pre-release integration tests by default * fixed integration tests * increased integration tests timeout * delete ipa after upload * delete all artifacts after the run * fixed integration tests * reduce integration tests timeout * build apk with latest macos runner * allow to skip release to one of the stores * added build checks to PR checks * fixed inputs naming * increased jvm heap --- .github/workflows/create_release.yml | 20 +++++++--- .github/workflows/pr_check.yml | 59 ++++++++++++++++++++++++++++ android/gradle.properties | 2 +- 3 files changed, 75 insertions(+), 6 deletions(-) diff --git a/.github/workflows/create_release.yml b/.github/workflows/create_release.yml index 8455c81..82329f2 100644 --- a/.github/workflows/create_release.yml +++ b/.github/workflows/create_release.yml @@ -27,6 +27,16 @@ on: required: true type: boolean default: true + deploy-ios: + description: "Publish to App Store" + required: true + type: boolean + default: true + deploy-android: + description: "Publish to Google Play" + required: true + type: boolean + default: true release-track: description: "Release track" type: choice @@ -67,7 +77,7 @@ jobs: build-android: name: Build Android needs: [generate-release-notes] - if: ${{ always() && !failure() && !cancelled() }} + if: ${{ always() && !failure() && !cancelled() && inputs.deploy-android }} strategy: matrix: binary-type: [apk, appbundle] @@ -82,7 +92,7 @@ jobs: build-ios: name: Build iOS needs: [generate-release-notes] - if: ${{ always() && !failure() && !cancelled() }} + if: ${{ always() && !failure() && !cancelled() && inputs.deploy-ios }} uses: ./.github/workflows/build_ipa.yml secrets: inherit with: @@ -92,7 +102,7 @@ jobs: create-github-release: name: Create Github release needs: [build-android, build-ios] - if: ${{ always() && !failure() && !cancelled() }} + if: ${{ always() && !cancelled() && inputs.deploy-android}} runs-on: ubuntu-latest permissions: contents: write @@ -143,7 +153,7 @@ jobs: create-google-play-release: name: Create Google Play release needs: [build-android, build-ios] - if: ${{ always() && !failure() && !cancelled() }} + if: ${{ always() && !failure() && !cancelled() && inputs.deploy-android }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -195,7 +205,7 @@ jobs: upload-to-app-store: name: Upload to App Store needs: [build-android, build-ios] - if: ${{ always() && !failure() && !cancelled() }} + if: ${{ always() && !failure() && !cancelled() && inputs.deploy-ios }} runs-on: macos-13 steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/pr_check.yml b/.github/workflows/pr_check.yml index 2682f66..c729a20 100644 --- a/.github/workflows/pr_check.yml +++ b/.github/workflows/pr_check.yml @@ -64,3 +64,62 @@ jobs: bash ./.github/scripts/stub_iap.sh flutter pub get flutter analyze lib --fatal-infos + + platform-changes: + name: Checks for platform changes + runs-on: ubuntu-latest + outputs: + android-changed: ${{ steps.platform-changes.outputs.android-changed }} + ios-changed: ${{ steps.platform-changes.outputs.ios-changed }} + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + + - id: platform-changes + uses: dorny/paths-filter@v2 + with: + filters: | + android-changed: + - 'android/**' + - 'pubspec.yaml' + ios-changed: + - 'ios/**' + - 'pubspec.yaml' + + build-android: + name: Build Android + needs: platform-changes + if: needs.platform-changes.outputs.android-changed == 'true' + uses: ./.github/workflows/build_apk.yml + secrets: inherit + with: + binary-type: apk + flavor: prod + stage-backend: false + version: "1.0.0" + + build-ios: + name: Build iOS + needs: platform-changes + if: needs.platform-changes.outputs.ios-changed == 'true' + uses: ./.github/workflows/build_ipa.yml + secrets: inherit + with: + stage-backend: false + version: "1.0.0" + + cleanup: + name: Cleanup + if: ${{ always() }} + needs: [build-android, build-ios] + runs-on: ubuntu-latest + steps: + - name: Delete release artifacts + uses: geekyeggo/delete-artifact@v2 + with: + failOnError: false + name: | + m3_lightmeter_apk + m3_lightmeter_appbundle + m3_lightmeter_ipa diff --git a/android/gradle.properties b/android/gradle.properties index b9a9a24..6fedaef 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,4 +1,4 @@ -org.gradle.jvmargs=-Xmx1536M +org.gradle.jvmargs=-Xmx2048M android.useAndroidX=true android.enableJetifier=true android.defaults.buildfeatures.buildconfig=true