m3_lightmeter/.github/workflows/pr_check.yml
Vadim 38407d6c08
Moved Firebase options to .gitignore (#212)
* fixed builds being pushed to main

* restore firebase options in workflows

* moved firebase options to gitignore
2025-01-23 18:24:32 +01:00

127 lines
3.5 KiB
YAML

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: PR check
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
jobs:
analyze-and-test:
name: Analyze & test
runs-on: macos-14
timeout-minutes: 10
steps:
- uses: 8BitJonny/gh-get-current-pr@2.2.0
id: PR
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Connect private iap package
uses: webfactory/ssh-agent@v0.8.0
id: fetch-iap
if: steps.PR.outputs.number == 'null' || github.event.pull_request.head.repo.full_name == github.repository
with:
ssh-private-key: ${{ secrets.M3_LIGHTMETER_IAP_KEY }}
- name: Override iap package with stub
id: override-iap
if: steps.fetch-iap.conclusion != 'success'
run: bash ./.github/scripts/stub_iap.sh
- name: Restore secrets
run: |
bash .github/scripts/restore_from_base64.sh "${{ secrets.CONSTANTS }}" "lib/constants.dart"
bash .github/scripts/restore_from_base64.sh "${{ secrets.FIREBASE_OPTIONS }}" "lib/firebase_options.dart"
- uses: subosito/flutter-action@v2
with:
channel: "stable"
flutter-version: "3.27.1"
- name: Prepare flutter project
run: |
flutter --version
flutter pub get
flutter pub run intl_utils:generate
- name: Analyze project source
run: flutter analyze lib --fatal-infos
- name: Run tests
run: |
defaults -currentHost write -g AppleFontSmoothing -int 0
flutter test --dart-define cameraStubImage=assets/camera_stub_image.jpg
- name: Analyze project source with stub
if: steps.override-iap.conclusion != 'success'
run: |
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