# 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: workflow_dispatch: push: branches: ["main"] pull_request: branches: ["main"] jobs: analyze_and_test: name: Analyze & test runs-on: macos-11 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 constants.dart run: bash .github/scripts/restore_from_base64.sh "${{ secrets.CONSTANTS }}" "lib/constants.dart" - uses: subosito/flutter-action@v2 with: channel: "stable" flutter-version: "3.10.0" - 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: flutter test - 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 run-integration-tests: name: Run integration tests timeout-minutes: 30 strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-13] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 with: submodules: recursive - name: Override iap package with stub id: override-iap run: bash ./.github/scripts/stub_iap.sh - name: Restore constants.dart run: bash .github/scripts/restore_from_base64.sh "${{ secrets.CONSTANTS }}" "lib/constants.dart" - uses: subosito/flutter-action@v2 with: channel: "stable" flutter-version: "3.10.0" - 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: Enable KVM if: ${{ matrix.os == 'ubuntu-latest' }} run: | echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules sudo udevadm control --reload-rules sudo udevadm trigger --name-match=kvm - name: Launch Android simulator & Run tests if: ${{ matrix.os == 'ubuntu-latest' }} uses: reactivecircus/android-emulator-runner@v2 with: api-level: 33 target: default arch: x86_64 profile: pixel_6 script: flutter test integration_test --flavor dev --dart-define cameraStubImage=assets/camera_stub_image.jpg - name: Launch iOS simulator uses: futureware-tech/simulator-action@v3 if: ${{ matrix.os == 'macos-13' }} with: model: "iPhone 15 Pro" - name: Run tests if: ${{ matrix.os == 'macos-13' }} run: flutter test integration_test --flavor dev --dart-define cameraStubImage=assets/camera_stub_image.jpg