-
Notifications
You must be signed in to change notification settings - Fork 249
228 lines (207 loc) · 7.7 KB
/
amplify_canaries.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
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:
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 failing builds
if: ${{ failure() }}
uses: ./.github/composite_actions/log_metric
with:
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
aws-region: ${{ secrets.AWS_REGION }}
metric-name: BuildCanaryTestFailure
value: 1
dimensions: channel=${{ matrix.channel }}
- name: Log succeeding builds
if: ${{ success() }}
uses: ./.github/composite_actions/log_metric
with:
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
aws-region: ${{ secrets.AWS_REGION }}
metric-name: BuildCanaryTestFailure
value: 0
dimensions: channel=${{ matrix.channel }}
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 failing android runs
if: ${{ failure() }}
uses: ./.github/composite_actions/log_metric
with:
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
aws-region: ${{ secrets.AWS_REGION }}
metric-name: E2ECanaryTestFailure
value: 1
dimensions: channel=${{ matrix.channel }},platform=android
- name: Log succeeding android runs
if: ${{ success() }}
uses: ./.github/composite_actions/log_metric
with:
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
aws-region: ${{ secrets.AWS_REGION }}
metric-name: E2ECanaryTestFailure
value: 0
dimensions: channel=${{ matrix.channel }},platform=android
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 failing ios runs
if: ${{ failure() }}
uses: ./.github/composite_actions/log_metric
with:
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
aws-region: ${{ secrets.AWS_REGION }}
metric-name: E2ECanaryTestFailure
value: 1
dimensions: channel=${{ matrix.channel }},platform=ios
- name: Log succeeding ios runs
if: ${{ success() }}
uses: ./.github/composite_actions/log_metric
with:
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
aws-region: ${{ secrets.AWS_REGION }}
metric-name: E2ECanaryTestFailure
value: 0
dimensions: channel=${{ matrix.channel }},platform=ios