Amplify Canaries #660
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Amplify Canaries | |
on: | |
pull_request: | |
paths: | |
- ".github/workflows/amplify_canaries.yaml" | |
schedule: | |
# 6am pacific time daily, only runs on default branch | |
- cron: "0 13 * * *" | |
# 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: | |
# TODO(equartey): Change to `macos-latest` after github migrates their runners - https://github.blog/changelog/2024-01-30-github-actions-macos-14-sonoma-is-now-available | |
runs-on: macos-14 | |
# 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.19.0" | |
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 }} | |
- uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2 # 3.12.0 | |
with: | |
distribution: "corretto" # Amazon Corretto Build of OpenJDK | |
java-version: "17" | |
- 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 | |
working-directory: canaries | |
framework: flutter | |
flutter-dart-channel: ${{ matrix.channel }} | |
flutter-version: ${{ matrix.flutter-version }} | |
e2e-android: | |
runs-on: ubuntu-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.19.0" | |
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 }} | |
- uses: actions/setup-java@cd89f46ac9d01407894225f350157564c9c7cee2 # 3.12.0 | |
with: | |
distribution: "corretto" # Amazon Corretto Build of OpenJDK | |
java-version: "17" | |
# 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 | |
working-directory: canaries | |
framework: flutter | |
flutter-dart-channel: ${{ matrix.channel }} | |
flutter-version: ${{ matrix.flutter-version }} | |
platform: android | |
platform-version: ${{ matrix.ios-version }} | |
e2e-ios: | |
# TODO(equartey): Change to `macos-latest` after github migrates their runners - https://github.blog/changelog/2024-01-30-github-actions-macos-14-sonoma-is-now-availabl | |
runs-on: macos-14-xlarge | |
# 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.19.0" | |
ios-version: | |
- "15.0" | |
- "latest" | |
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 | |
working-directory: canaries | |
framework: flutter | |
flutter-dart-channel: ${{ matrix.channel }} | |
flutter-version: ${{ matrix.flutter-version }} | |
platform: ios | |
platform-version: ${{ matrix.ios-version }} |