-
Notifications
You must be signed in to change notification settings - Fork 58
244 lines (238 loc) · 7.8 KB
/
pr-validation.yml
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
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
name: "PR CI Validation"
on:
pull_request
jobs:
run-swift-builds:
runs-on: macos-13
timeout-minutes: 6
strategy:
fail-fast: false
matrix:
include:
- package: apollo-ios
- package: apollo-ios-codegen
name: Run swift build for SPM packages
steps:
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: ${{ vars.XCODE_VERSION }}
- name: Checkout Repo
uses: actions/checkout@v3
- name: Setup Repo
id: setup-repo
uses: ./.github/actions/setup-repo
- name: Run Swift Build
shell: bash
run: |
cd ${{ matrix.package }} && swift build
build-and-unit-test:
runs-on: macos-13-xl
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
include:
# macOS_current
- destination: platform=macOS,arch=x86_64
scheme: ApolloTests
test-plan: Apollo-CITestPlan
name: Apollo Unit Tests - macOS ${{ vars.MACOS_VERSION }}
run-js-tests: false
# iOS_current
- destination: platform=iOS Simulator,OS=${{ vars.IOS_CURRENT_VERSION }},name=iPhone 14
scheme: ApolloTests
test-plan: Apollo-CITestPlan
name: Apollo Unit Tests - iOS ${{ vars.IOS_CURRENT_VERSION }}
run-js-tests: false
# iOS_previous
- destination: platform=iOS Simulator,OS=${{ vars.IOS_PREVIOUS_VERSION }},name=iPhone 13
scheme: ApolloTests
test-plan: Apollo-CITestPlan
name: Apollo Unit Tests - iOS ${{ vars.IOS_PREVIOUS_VERSION }}
run-js-tests: false
# tvOS_current
- destination: platform=tvOS Simulator,OS=${{ vars.TVOS_VERSION }},name=Apple TV
scheme: ApolloTests
test-plan: Apollo-CITestPlan
name: Apollo Unit Tests - tvOS ${{ vars.TVOS_VERSION }}
run-js-tests: false
# Codegen CLI Test
- destination: platform=macOS,arch=x86_64
scheme: CodegenCLITests
test-plan: CodegenCLITestPlan
name: Codegen CLI Unit Tests - macOS ${{ vars.MACOS_VERSION }}
run-js-tests: false
# CodegenLib Test
- destination: platform=macOS,arch=x86_64
scheme: ApolloCodegenTests
test-plan: Apollo-Codegen-CITestPlan
name: Codegen Lib Unit Tests - macOS ${{ vars.MACOS_VERSION }}
run-js-tests: true
name: ${{ matrix.name }}
steps:
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: ${{ vars.XCODE_VERSION }}
- name: Checkout Repo
uses: actions/checkout@v3
- name: Setup Repo
id: setup-repo
uses: ./.github/actions/setup-repo
# Caching for apollo-ios and apollo-ios-codegen SPM dependencies
# - uses: actions/cache@v3
# with:
# path: ./DerivedData/SourcePackages
# key: ${{ runner.os }}-spm-${{ hashFiles('./apollo-ios/Package.resolved') }}-${{ hashFiles('./apollo-ios-codegen/Package.resolved') }}
- name: Run Tuist Generation
uses: tuist/[email protected]
with:
command: 'generate'
arguments: ''
- name: Build and Test
uses: ./.github/actions/build-and-run-unit-tests
with:
destination: ${{ matrix.destination }}
scheme: ${{ matrix.scheme }}
test-plan: ${{ matrix.test-plan }}
- name: Run-JS-Tests
if: ${{ matrix.run-js-tests == true }}
shell: bash
working-directory: apollo-ios-codegen/Sources/ApolloCodegenLib/Frontend/JavaScript/
run: |
npm install && npm test
- name: Save xcodebuild logs
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.name }}-logs
path: |
DerivedData/Logs/Build
- name: Save crash logs
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.name }}-crashes
path: |
~/Library/Logs/DiagnosticReports
- name: Zip Result Bundle
shell: bash
working-directory: TestResults
run: |
zip -r ResultBundle.zip ResultBundle.xcresult
- name: Save test results
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.name }}-results
path: |
TestResults/ResultBundle.zip
run-codegen-test-configurations:
runs-on: macos-13-xl
timeout-minutes: 15
name: Codegen Test Configurations - macOS ${{ vars.MACOS_VERSION }}
steps:
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: ${{ vars.XCODE_VERSION }}
- name: Checkout Repo
uses: actions/checkout@v3
- name: Setup Repo
id: setup-repo
uses: ./.github/actions/setup-repo
- name: Install XCBeautify
shell: bash
run: |
HOMEBREW_NO_AUTO_UPDATE=1 brew install xcbeautify
- name: Test Codegen Configurations
shell: bash
run: |
./scripts/run-test-codegen-configurations.sh -t
run-cocoapods-integration-tests:
runs-on: macos-13
timeout-minutes: 15
name: Cocoapods Integration Tests - macOS ${{ vars.MACOS_VERSION }}
steps:
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: ${{ vars.XCODE_VERSION }}
- name: Checkout Repo
uses: actions/checkout@v3
- name: Setup Repo
id: setup-repo
uses: ./.github/actions/setup-repo
- name: Export ENV Variables
shell: bash
working-directory: apollo-ios
run: |
apollo_ios_sha=$(git rev-parse HEAD)
echo "APOLLO_IOS_SHA=$apollo_ios_sha" >> ${GITHUB_ENV}
- name: Run CocoaPods Integration Tests
id: run-cocoapods-integration-tests
uses: ./.github/actions/run-cocoapods-integration-tests
run-integration-tests:
runs-on: macos-13-xl
timeout-minutes: 15
name: Apollo Integration Tests - macOS ${{ vars.MACOS_VERSION }}
steps:
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: ${{ vars.XCODE_VERSION }}
- name: Checkout Repo
uses: actions/checkout@v3
- name: Setup Repo
id: setup-repo
uses: ./.github/actions/setup-repo
- name: Setup Node 12.22.10
uses: actions/setup-node@v3
with:
node-version: 12.22.10
- name: Setup Upload Server
shell: bash
run: |
sudo chmod -R +rwx SimpleUploadServer
cd SimpleUploadServer && npm install && npm start &
- name: Setup Node 18.15.0
uses: actions/setup-node@v3
with:
node-version: 18.15.0
- name: Setup Subscription Server
shell: bash
run: |
sh ./scripts/install-apollo-server-docs-example-server.sh
cd ../docs-examples/apollo-server/v3/subscriptions-graphql-ws && npm start &
- name: Setup Star Wars Server
shell: bash
run: |
sh ./scripts/install-or-update-starwars-server.sh
cd ../starwars-server && npm start &
- name: Run Tuist Generation
uses: tuist/[email protected]
with:
command: 'generate'
arguments: ''
- name: Build and Test
uses: ./.github/actions/build-and-run-unit-tests
with:
destination: platform=macOS,arch=x86_64
scheme: ApolloServerIntegrationTests
test-plan: Apollo-IntegrationTestPlan
- name: Save xcodebuild logs
uses: actions/upload-artifact@v3
with:
name: macOS-Integration-logs
path: |
DerivedData/Logs/Build
- name: Save crash logs
uses: actions/upload-artifact@v3
with:
name: macOS-Integration-crashes
path: |
~/Library/Logs/DiagnosticReports
- name: Zip Result Bundle
shell: bash
working-directory: TestResults
run: |
zip -r ResultBundle.zip ResultBundle.xcresult
- name: Save test results
uses: actions/upload-artifact@v3
with:
name: macOS-Integration-results
path: |
TestResults/ResultBundle.zip