diff --git a/.github/workflows/AAA_test.yaml b/.github/workflows/AAA_test.yaml new file mode 100644 index 00000000000..617f71d6104 --- /dev/null +++ b/.github/workflows/AAA_test.yaml @@ -0,0 +1,220 @@ +name: Amplify Canaries +on: push + +# Cancels in-progress job when there is another push to same ref. +# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-only-cancel-in-progress-jobs-or-runs-for-the-current-workflow +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + # Ensure an app pulling in published Amplify libraries can build properly + build: + runs-on: macos-latest + # These permissions are needed to interact with GitHub's OIDC Token endpoint. + permissions: + id-token: write + contents: read + strategy: + fail-fast: false + matrix: + channel: + - "beta" + - "stable" + flutter-version: + - "any" # latest + include: + - channel: "stable" + flutter-version: "3.10.1" + steps: + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # 3.6.0 + with: + persist-credentials: false + + - name: Install dependencies + uses: ./.github/composite_actions/install_dependencies + with: + channel: ${{ matrix.channel }} + flutter-version: ${{ matrix.flutter-version }} + + # Flutter requires Java 11 to build android apps with Gradle. + - uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2 # 3.12.0 + with: + distribution: "corretto" # Amazon Corretto Build of OpenJDK + java-version: "11" + + - name: Build Canary (iOS) + run: build-support/build_canary.sh ios --no-codesign + + - name: Build Canary (Android) + run: build-support/build_canary.sh apk + + - name: Log success/failure + if: always() + uses: ./.github/composite_actions/log_cw_metric_wrapper + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} + + job-status: ${{ job.status }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + test-type: canary + package-name: amplify_canaries + + framework: flutter + flutter-dart-channel: ${{ matrix.channel }} + flutter-version: ${{ matrix.flutter-version }} + + e2e-android: + runs-on: + labels: amplify-flutter_ubuntu-latest_4-core + # These permissions are needed to interact with GitHub's OIDC Token endpoint. + permissions: + id-token: write + contents: read + strategy: + fail-fast: false + matrix: + channel: + - "beta" + - "stable" + flutter-version: + - "any" # latest + include: + - channel: "stable" + flutter-version: "3.10.1" + steps: + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # 3.6.0 + with: + persist-credentials: false + submodules: true + + - name: Install dependencies + uses: ./.github/composite_actions/install_dependencies + with: + channel: ${{ matrix.channel }} + flutter-version: ${{ matrix.flutter-version }} + + # Flutter requires Java 11 to build android apps with Gradle. + - uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2 # 3.12.0 + with: + distribution: "corretto" # Amazon Corretto Build of OpenJDK + java-version: "11" + + # Must be run before `fetch_backends` so that `pubspec.lock` is present. + - name: Pub Upgrade + working-directory: canaries + run: flutter pub upgrade + + - name: Fetch Amplify backend configurations + uses: ./.github/composite_actions/fetch_backends + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} + scope: amplified_todo + secret-identifier: ${{ secrets.AWS_SECRET_IDENTIFIER }} + + - name: Run Canary + timeout-minutes: 45 + uses: ./.github/composite_actions/launch_android_emulator + with: + # Perform a build to reduce startup time of `flutter test` and prevent timeout + script: cd canaries && flutter build apk --debug && flutter test -d emulator-5554 integration_test/main_test.dart + + - name: Log success/failure + if: always() + uses: ./.github/composite_actions/log_cw_metric_wrapper + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} + + job-status: ${{ job.status }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + test-type: canary + package-name: amplify_canaries + + framework: flutter + flutter-dart-channel: ${{ matrix.channel }} + flutter-version: ${{ matrix.flutter-version }} + platform: android + platform-version: ${{ matrix.ios-version }} + + e2e-ios: + runs-on: macos-latest-xl + # These permissions are needed to interact with GitHub's OIDC Token endpoint. + permissions: + id-token: write + contents: read + strategy: + fail-fast: false + matrix: + channel: + - "beta" + - "stable" + flutter-version: + - "any" # latest + include: + - channel: "stable" + flutter-version: "3.10.1" + ios-version: + - "14.5" + - "16" + steps: + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # 3.6.0 + with: + persist-credentials: false + submodules: true + + - name: Install dependencies + uses: ./.github/composite_actions/install_dependencies + with: + channel: ${{ matrix.channel }} + flutter-version: ${{ matrix.flutter-version }} + + # Must be run before `fetch_backends` so that `pubspec.lock` is present. + - name: Pub Upgrade + working-directory: canaries + run: flutter pub upgrade + + - name: Fetch Amplify backend configurations + uses: ./.github/composite_actions/fetch_backends + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} + scope: amplified_todo + secret-identifier: ${{ secrets.AWS_SECRET_IDENTIFIER }} + + - name: Launch iOS simulator + uses: ./.github/composite_actions/launch_ios_simulator + timeout-minutes: 20 + with: + ios-version: ${{ matrix.ios-version }} + + - name: Run iOS integration tests + timeout-minutes: 45 + working-directory: canaries + run: | + # Perform a build to reduce startup time of `flutter test` and prevent timeout + flutter build ios --simulator --target=integration_test/main_test.dart + flutter test -d test integration_test/main_test.dart --verbose + + - name: Log success/failure + if: always() + uses: ./.github/composite_actions/log_cw_metric_wrapper + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} + + job-status: ${{ job.status }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + test-type: canary + package-name: amplify_canaries + + framework: flutter + flutter-dart-channel: ${{ matrix.channel }} + flutter-version: ${{ matrix.flutter-version }} + platform: ios + platform-version: ${{ matrix.ios-version }}