]>
Commit | Line | Data |
---|---|---|
ba9703b0 XL |
1 | ###################################################### |
2 | # WARNING! Action needed when changing this file # | |
3 | ###################################################### | |
4 | ||
5 | # Due to GitHub Actions limitations, we can't use YAML Anchors directly in the | |
6 | # CI configuration stored on the repository. To work around that this file is | |
7 | # expanded by a tool in the repository, and the expansion is committed as well. | |
8 | # | |
9 | # After you make any change to the file you'll need to run this command: | |
10 | # | |
11 | # ./x.py run src/tools/expand-yaml-anchors | |
12 | # | |
13 | # ...and commit the file it updated in addition to this one. If you forget this | |
14 | # step CI will fail. | |
15 | ||
16 | --- | |
17 | ||
18 | ############################### | |
19 | # YAML Anchors Definition # | |
20 | ############################### | |
21 | ||
22 | # This key contains most of the YAML anchors that will be used later in the | |
23 | # document. YAML anchors allows us to greatly reduce duplication inside the CI | |
24 | # configuration by reusing parts of the configuration. | |
25 | # | |
26 | # YAML anchors work by defining an anchor with `&anchor-name` and reusing its | |
27 | # content in another place with `*anchor-name`. The special `<<` map key merges | |
28 | # the content of the map with the content of the anchor (or list of anchors). | |
29 | # | |
30 | # The expand-yaml-anchors tool will automatically remove this block from the | |
31 | # output YAML file. | |
32 | x--expand-yaml-anchors--remove: | |
33 | ||
34 | - &shared-ci-variables | |
35 | CI_JOB_NAME: ${{ matrix.name }} | |
36 | ||
37 | - &public-variables | |
f9652781 XL |
38 | SCCACHE_BUCKET: rust-lang-ci-sccache2 |
39 | TOOLSTATE_REPO: https://github.com/rust-lang-nursery/rust-toolstate | |
40 | CACHE_DOMAIN: ci-caches.rust-lang.org | |
ba9703b0 XL |
41 | |
42 | - &prod-variables | |
f9652781 XL |
43 | SCCACHE_BUCKET: rust-lang-ci-sccache2 |
44 | DEPLOY_BUCKET: rust-lang-ci2 | |
45 | TOOLSTATE_REPO: https://github.com/rust-lang-nursery/rust-toolstate | |
46 | TOOLSTATE_ISSUES_API_URL: https://api.github.com/repos/rust-lang/rust/issues | |
47 | TOOLSTATE_PUBLISH: 1 | |
48 | # AWS_SECRET_ACCESS_KEYs are stored in GitHub's secrets storage, named | |
49 | # AWS_SECRET_ACCESS_KEY_<keyid>. Including the key id in the name allows to | |
50 | # rotate them in a single branch while keeping the old key in another | |
51 | # branch, which wouldn't be possible if the key was named with the kind | |
52 | # (caches, artifacts...). | |
53 | CACHES_AWS_ACCESS_KEY_ID: AKIA46X5W6CZI5DHEBFL | |
54 | ARTIFACTS_AWS_ACCESS_KEY_ID: AKIA46X5W6CZN24CBO55 | |
55 | CACHE_DOMAIN: ci-caches.rust-lang.org | |
56 | ||
57 | - &dummy-variables | |
ba9703b0 XL |
58 | SCCACHE_BUCKET: rust-lang-gha-caches |
59 | DEPLOY_BUCKET: rust-lang-gha | |
60 | TOOLSTATE_REPO: https://github.com/pietroalbini/rust-toolstate | |
61 | TOOLSTATE_ISSUES_API_URL: https://api.github.com/repos/pietroalbini/rust-toolstate/issues | |
62 | TOOLSTATE_PUBLISH: 1 | |
63 | # AWS_SECRET_ACCESS_KEYs are stored in GitHub's secrets storage, named | |
64 | # AWS_SECRET_ACCESS_KEY_<keyid>. Including the key id in the name allows to | |
65 | # rotate them in a single branch while keeping the old key in another | |
66 | # branch, which wouldn't be possible if the key was named with the kind | |
67 | # (caches, artifacts...). | |
68 | CACHES_AWS_ACCESS_KEY_ID: AKIA46X5W6CZOMUQATD5 | |
69 | ARTIFACTS_AWS_ACCESS_KEY_ID: AKIA46X5W6CZH5AYXDVF | |
f9f354fc | 70 | CACHE_DOMAIN: ci-caches-gha.rust-lang.org |
ba9703b0 XL |
71 | |
72 | - &base-job | |
73 | env: {} | |
74 | ||
75 | - &job-linux-xl | |
76 | os: ubuntu-latest-xl | |
77 | <<: *base-job | |
78 | ||
79 | - &job-macos-xl | |
80 | os: macos-latest # We don't have an XL builder for this | |
81 | <<: *base-job | |
82 | ||
83 | - &job-windows-xl | |
84 | os: windows-latest-xl | |
85 | <<: *base-job | |
86 | ||
3dfed10e XL |
87 | - &job-aarch64-linux |
88 | os: [self-hosted, ARM64, linux] | |
89 | ||
ba9703b0 XL |
90 | - &step |
91 | if: success() && !env.SKIP_JOB | |
92 | ||
ba9703b0 XL |
93 | - &base-ci-job |
94 | timeout-minutes: 600 | |
95 | runs-on: "${{ matrix.os }}" | |
96 | env: *shared-ci-variables | |
97 | steps: | |
98 | - name: disable git crlf conversion | |
99 | run: git config --global core.autocrlf false | |
ba9703b0 XL |
100 | |
101 | - name: checkout the source code | |
102 | uses: actions/checkout@v1 | |
103 | with: | |
104 | fetch-depth: 2 | |
105 | ||
f9652781 XL |
106 | # Rust Log Analyzer can't currently detect the PR number of a GitHub |
107 | # Actions build on its own, so a hint in the log message is needed to | |
108 | # point it in the right direction. | |
109 | - name: configure the PR in which the error message will be posted | |
110 | run: echo "[CI_PR_NUMBER=$num]" | |
111 | env: | |
112 | num: ${{ github.event.number }} | |
113 | if: success() && !env.SKIP_JOBS && github.event_name == 'pull_request' | |
114 | ||
ba9703b0 XL |
115 | - name: add extra environment variables |
116 | run: src/ci/scripts/setup-environment.sh | |
117 | env: | |
118 | # Since it's not possible to merge `${{ matrix.env }}` with the other | |
119 | # variables in `job.<name>.env`, the variables defined in the matrix | |
120 | # are passed to the `setup-environment.sh` script encoded in JSON, | |
121 | # which then uses log commands to actually set them. | |
122 | EXTRA_VARIABLES: ${{ toJson(matrix.env) }} | |
f9f354fc | 123 | <<: *step |
ba9703b0 XL |
124 | |
125 | - name: decide whether to skip this job | |
126 | run: src/ci/scripts/should-skip-this.sh | |
f9f354fc | 127 | <<: *step |
ba9703b0 | 128 | |
1b1a35ee XL |
129 | - name: configure GitHub Actions to kill the build when outdated |
130 | uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master | |
131 | with: | |
132 | github_token: "${{ secrets.github_token }}" | |
133 | if: success() && !env.SKIP_JOB && github.ref != 'refs/heads/try' | |
134 | <<: *step | |
135 | ||
ba9703b0 XL |
136 | - name: collect CPU statistics |
137 | run: src/ci/scripts/collect-cpu-stats.sh | |
f9f354fc | 138 | <<: *step |
ba9703b0 XL |
139 | |
140 | - name: show the current environment | |
141 | run: src/ci/scripts/dump-environment.sh | |
f9f354fc | 142 | <<: *step |
ba9703b0 XL |
143 | |
144 | - name: install awscli | |
145 | run: src/ci/scripts/install-awscli.sh | |
f9f354fc | 146 | <<: *step |
ba9703b0 XL |
147 | |
148 | - name: install sccache | |
149 | run: src/ci/scripts/install-sccache.sh | |
f9f354fc | 150 | <<: *step |
ba9703b0 XL |
151 | |
152 | - name: install clang | |
153 | run: src/ci/scripts/install-clang.sh | |
f9f354fc | 154 | <<: *step |
ba9703b0 XL |
155 | |
156 | - name: install WIX | |
157 | run: src/ci/scripts/install-wix.sh | |
f9f354fc | 158 | <<: *step |
ba9703b0 | 159 | |
ba9703b0 XL |
160 | - name: ensure the build happens on a partition with enough space |
161 | run: src/ci/scripts/symlink-build-dir.sh | |
f9f354fc | 162 | <<: *step |
ba9703b0 XL |
163 | |
164 | - name: disable git crlf conversion | |
165 | run: src/ci/scripts/disable-git-crlf-conversion.sh | |
f9f354fc | 166 | <<: *step |
ba9703b0 XL |
167 | |
168 | - name: install MSYS2 | |
169 | run: src/ci/scripts/install-msys2.sh | |
f9f354fc | 170 | <<: *step |
ba9703b0 | 171 | |
ba9703b0 XL |
172 | - name: install MinGW |
173 | run: src/ci/scripts/install-mingw.sh | |
f9f354fc | 174 | <<: *step |
ba9703b0 XL |
175 | |
176 | - name: install ninja | |
177 | run: src/ci/scripts/install-ninja.sh | |
f9f354fc | 178 | <<: *step |
ba9703b0 XL |
179 | |
180 | - name: enable ipv6 on Docker | |
181 | run: src/ci/scripts/enable-docker-ipv6.sh | |
f9f354fc | 182 | <<: *step |
ba9703b0 XL |
183 | |
184 | # Disable automatic line ending conversion (again). On Windows, when we're | |
185 | # installing dependencies, something switches the git configuration directory or | |
186 | # re-enables autocrlf. We've not tracked down the exact cause -- and there may | |
187 | # be multiple -- but this should ensure submodules are checked out with the | |
188 | # appropriate line endings. | |
189 | - name: disable git crlf conversion | |
190 | run: src/ci/scripts/disable-git-crlf-conversion.sh | |
f9f354fc | 191 | <<: *step |
ba9703b0 XL |
192 | |
193 | - name: checkout submodules | |
194 | run: src/ci/scripts/checkout-submodules.sh | |
f9f354fc | 195 | <<: *step |
ba9703b0 XL |
196 | |
197 | - name: ensure line endings are correct | |
198 | run: src/ci/scripts/verify-line-endings.sh | |
f9f354fc | 199 | <<: *step |
ba9703b0 XL |
200 | |
201 | - name: run the build | |
202 | run: src/ci/scripts/run-build-from-ci.sh | |
203 | env: | |
204 | AWS_ACCESS_KEY_ID: ${{ env.CACHES_AWS_ACCESS_KEY_ID }} | |
205 | AWS_SECRET_ACCESS_KEY: ${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.CACHES_AWS_ACCESS_KEY_ID)] }} | |
206 | TOOLSTATE_REPO_ACCESS_TOKEN: ${{ secrets.TOOLSTATE_REPO_ACCESS_TOKEN }} | |
f9f354fc | 207 | <<: *step |
ba9703b0 XL |
208 | |
209 | - name: upload artifacts to S3 | |
210 | run: src/ci/scripts/upload-artifacts.sh | |
211 | env: | |
212 | AWS_ACCESS_KEY_ID: ${{ env.ARTIFACTS_AWS_ACCESS_KEY_ID }} | |
213 | AWS_SECRET_ACCESS_KEY: ${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.ARTIFACTS_AWS_ACCESS_KEY_ID)] }} | |
214 | # Adding a condition on DEPLOY=1 or DEPLOY_ALT=1 is not needed as all deploy | |
215 | # builders *should* have the AWS credentials available. Still, explicitly | |
216 | # adding the condition is helpful as this way CI will not silently skip | |
217 | # deploying artifacts from a dist builder if the variables are misconfigured, | |
218 | # erroring about invalid credentials instead. | |
219 | if: success() && !env.SKIP_JOB && (github.event_name == 'push' || env.DEPLOY == '1' || env.DEPLOY_ALT == '1') | |
f9f354fc | 220 | <<: *step |
ba9703b0 XL |
221 | |
222 | # These snippets are used by the try-success, try-failure, auto-success and auto-failure jobs. | |
223 | # Check out their documentation for more information on why they're needed. | |
224 | ||
225 | - &base-outcome-job | |
226 | name: bors build finished | |
227 | runs-on: ubuntu-latest | |
228 | ||
229 | - &base-success-job | |
230 | steps: | |
231 | - name: mark the job as a success | |
232 | run: exit 0 | |
f9f354fc | 233 | shell: bash |
ba9703b0 XL |
234 | <<: *base-outcome-job |
235 | ||
236 | - &base-failure-job | |
237 | steps: | |
238 | - name: mark the job as a failure | |
239 | run: exit 1 | |
f9f354fc | 240 | shell: bash |
ba9703b0 XL |
241 | <<: *base-outcome-job |
242 | ||
243 | ########################### | |
244 | # Builders definition # | |
245 | ########################### | |
246 | ||
247 | name: CI | |
248 | on: | |
249 | push: | |
250 | branches: | |
251 | - auto | |
252 | - try | |
3dfed10e | 253 | - try-perf |
ba9703b0 XL |
254 | - master |
255 | pull_request: | |
256 | branches: | |
257 | - "**" | |
258 | ||
f9f354fc XL |
259 | defaults: |
260 | run: | |
f035d41b XL |
261 | # On Linux, macOS, and Windows, use the system-provided bash as the default |
262 | # shell. (This should only make a difference on Windows, where the default | |
263 | # shell is PowerShell.) | |
264 | shell: bash | |
f9f354fc | 265 | |
ba9703b0 XL |
266 | jobs: |
267 | pr: | |
268 | <<: *base-ci-job | |
269 | name: PR | |
270 | env: | |
271 | <<: [*shared-ci-variables, *public-variables] | |
272 | if: github.event_name == 'pull_request' | |
273 | strategy: | |
274 | matrix: | |
ba9703b0 XL |
275 | include: |
276 | - name: mingw-check | |
277 | <<: *job-linux-xl | |
278 | ||
279 | - name: x86_64-gnu-llvm-8 | |
280 | <<: *job-linux-xl | |
281 | ||
282 | - name: x86_64-gnu-tools | |
283 | env: | |
284 | CI_ONLY_WHEN_SUBMODULES_CHANGED: 1 | |
285 | <<: *job-linux-xl | |
286 | ||
ba9703b0 XL |
287 | auto: |
288 | <<: *base-ci-job | |
289 | name: auto | |
290 | env: | |
291 | <<: [*shared-ci-variables, *prod-variables] | |
292 | if: github.event_name == 'push' && github.ref == 'refs/heads/auto' && github.repository == 'rust-lang-ci/rust' | |
293 | strategy: | |
294 | matrix: | |
ba9703b0 XL |
295 | include: |
296 | ############################# | |
297 | # Linux/Docker builders # | |
298 | ############################# | |
299 | ||
300 | - name: arm-android | |
301 | <<: *job-linux-xl | |
302 | ||
303 | - name: armhf-gnu | |
304 | <<: *job-linux-xl | |
305 | ||
306 | - name: dist-aarch64-linux | |
307 | <<: *job-linux-xl | |
308 | ||
309 | - name: dist-android | |
310 | <<: *job-linux-xl | |
311 | ||
312 | - name: dist-arm-linux | |
313 | <<: *job-linux-xl | |
314 | ||
315 | - name: dist-armhf-linux | |
316 | <<: *job-linux-xl | |
317 | ||
318 | - name: dist-armv7-linux | |
319 | <<: *job-linux-xl | |
320 | ||
321 | - name: dist-i586-gnu-i586-i686-musl | |
322 | <<: *job-linux-xl | |
323 | ||
324 | - name: dist-i686-freebsd | |
325 | <<: *job-linux-xl | |
326 | ||
327 | - name: dist-i686-linux | |
328 | <<: *job-linux-xl | |
329 | ||
330 | - name: dist-mips-linux | |
331 | <<: *job-linux-xl | |
332 | ||
333 | - name: dist-mips64-linux | |
334 | <<: *job-linux-xl | |
335 | ||
336 | - name: dist-mips64el-linux | |
337 | <<: *job-linux-xl | |
338 | ||
339 | - name: dist-mipsel-linux | |
340 | <<: *job-linux-xl | |
341 | ||
342 | - name: dist-powerpc-linux | |
343 | <<: *job-linux-xl | |
344 | ||
345 | - name: dist-powerpc64-linux | |
346 | <<: *job-linux-xl | |
347 | ||
348 | - name: dist-powerpc64le-linux | |
349 | <<: *job-linux-xl | |
350 | ||
3dfed10e XL |
351 | - name: dist-riscv64-linux |
352 | <<: *job-linux-xl | |
353 | ||
ba9703b0 XL |
354 | - name: dist-s390x-linux |
355 | <<: *job-linux-xl | |
356 | ||
357 | - name: dist-various-1 | |
358 | <<: *job-linux-xl | |
359 | ||
360 | - name: dist-various-2 | |
361 | <<: *job-linux-xl | |
362 | ||
363 | - name: dist-x86_64-freebsd | |
364 | <<: *job-linux-xl | |
365 | ||
3dfed10e XL |
366 | - name: dist-x86_64-illumos |
367 | <<: *job-linux-xl | |
368 | ||
1b1a35ee XL |
369 | - &dist-x86_64-linux |
370 | name: dist-x86_64-linux | |
ba9703b0 XL |
371 | <<: *job-linux-xl |
372 | ||
373 | - name: dist-x86_64-linux-alt | |
374 | env: | |
375 | IMAGE: dist-x86_64-linux | |
376 | <<: *job-linux-xl | |
377 | ||
378 | - name: dist-x86_64-musl | |
379 | <<: *job-linux-xl | |
380 | ||
381 | - name: dist-x86_64-netbsd | |
382 | <<: *job-linux-xl | |
383 | ||
384 | - name: i686-gnu | |
385 | <<: *job-linux-xl | |
386 | ||
387 | - name: i686-gnu-nopt | |
388 | <<: *job-linux-xl | |
389 | ||
390 | - name: mingw-check | |
391 | <<: *job-linux-xl | |
392 | ||
393 | - name: test-various | |
394 | <<: *job-linux-xl | |
395 | ||
396 | - name: wasm32 | |
397 | <<: *job-linux-xl | |
398 | ||
399 | - name: x86_64-gnu | |
400 | <<: *job-linux-xl | |
401 | ||
402 | - name: x86_64-gnu-aux | |
403 | <<: *job-linux-xl | |
404 | ||
405 | - name: x86_64-gnu-debug | |
406 | <<: *job-linux-xl | |
407 | ||
408 | - name: x86_64-gnu-distcheck | |
409 | <<: *job-linux-xl | |
410 | ||
ba9703b0 XL |
411 | - name: x86_64-gnu-llvm-8 |
412 | env: | |
413 | RUST_BACKTRACE: 1 | |
414 | <<: *job-linux-xl | |
415 | ||
416 | - name: x86_64-gnu-nopt | |
417 | <<: *job-linux-xl | |
418 | ||
419 | - name: x86_64-gnu-tools | |
420 | env: | |
421 | DEPLOY_TOOLSTATES_JSON: toolstates-linux.json | |
422 | <<: *job-linux-xl | |
423 | ||
1b1a35ee XL |
424 | #################### |
425 | # macOS Builders # | |
426 | #################### | |
427 | ||
428 | - name: dist-x86_64-apple | |
429 | env: | |
430 | SCRIPT: ./x.py dist | |
431 | RUST_CONFIGURE_ARGS: --host=x86_64-apple-darwin --target=x86_64-apple-darwin,aarch64-apple-ios,x86_64-apple-ios --enable-full-tools --enable-sanitizers --enable-profiler --set rust.jemalloc --set llvm.ninja=false | |
432 | RUSTC_RETRY_LINKER_ON_SEGFAULT: 1 | |
433 | MACOSX_DEPLOYMENT_TARGET: 10.7 | |
434 | NO_LLVM_ASSERTIONS: 1 | |
435 | NO_DEBUG_ASSERTIONS: 1 | |
436 | DIST_REQUIRE_ALL_TOOLS: 1 | |
437 | <<: *job-macos-xl | |
438 | ||
439 | - name: dist-x86_64-apple-alt | |
440 | env: | |
441 | SCRIPT: ./x.py dist | |
442 | RUST_CONFIGURE_ARGS: --enable-extended --enable-profiler --set rust.jemalloc --set llvm.ninja=false | |
443 | RUSTC_RETRY_LINKER_ON_SEGFAULT: 1 | |
444 | MACOSX_DEPLOYMENT_TARGET: 10.7 | |
445 | NO_LLVM_ASSERTIONS: 1 | |
446 | NO_DEBUG_ASSERTIONS: 1 | |
447 | <<: *job-macos-xl | |
448 | ||
449 | - name: x86_64-apple | |
450 | env: | |
451 | SCRIPT: ./x.py --stage 2 test | |
452 | RUST_CONFIGURE_ARGS: --build=x86_64-apple-darwin --enable-sanitizers --enable-profiler --set rust.jemalloc --set llvm.ninja=false | |
453 | RUSTC_RETRY_LINKER_ON_SEGFAULT: 1 | |
454 | MACOSX_DEPLOYMENT_TARGET: 10.8 | |
455 | MACOSX_STD_DEPLOYMENT_TARGET: 10.7 | |
456 | NO_LLVM_ASSERTIONS: 1 | |
457 | NO_DEBUG_ASSERTIONS: 1 | |
458 | <<: *job-macos-xl | |
459 | ||
ba9703b0 XL |
460 | ###################### |
461 | # Windows Builders # | |
462 | ###################### | |
463 | ||
464 | - name: x86_64-msvc-1 | |
465 | env: | |
466 | RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-profiler | |
467 | SCRIPT: make ci-subset-1 | |
468 | # FIXME(#59637) | |
469 | NO_DEBUG_ASSERTIONS: 1 | |
470 | NO_LLVM_ASSERTIONS: 1 | |
471 | <<: *job-windows-xl | |
472 | ||
473 | - name: x86_64-msvc-2 | |
474 | env: | |
475 | RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-profiler | |
476 | SCRIPT: make ci-subset-2 | |
477 | <<: *job-windows-xl | |
478 | ||
479 | - name: i686-msvc-1 | |
480 | env: | |
481 | RUST_CONFIGURE_ARGS: --build=i686-pc-windows-msvc | |
482 | SCRIPT: make ci-subset-1 | |
483 | # FIXME(#59637) | |
484 | NO_DEBUG_ASSERTIONS: 1 | |
485 | NO_LLVM_ASSERTIONS: 1 | |
486 | <<: *job-windows-xl | |
487 | ||
488 | - name: i686-msvc-2 | |
489 | env: | |
490 | RUST_CONFIGURE_ARGS: --build=i686-pc-windows-msvc | |
491 | SCRIPT: make ci-subset-2 | |
492 | # FIXME(#59637) | |
493 | NO_DEBUG_ASSERTIONS: 1 | |
494 | NO_LLVM_ASSERTIONS: 1 | |
495 | <<: *job-windows-xl | |
496 | ||
ba9703b0 XL |
497 | - name: x86_64-msvc-cargo |
498 | env: | |
3dfed10e | 499 | SCRIPT: python x.py --stage 2 test src/tools/cargotest src/tools/cargo |
f9f354fc | 500 | RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-lld |
ba9703b0 XL |
501 | VCVARS_BAT: vcvars64.bat |
502 | # FIXME(#59637) | |
503 | NO_DEBUG_ASSERTIONS: 1 | |
504 | NO_LLVM_ASSERTIONS: 1 | |
505 | <<: *job-windows-xl | |
506 | ||
507 | - name: x86_64-msvc-tools | |
508 | env: | |
f035d41b | 509 | SCRIPT: src/ci/docker/host-x86_64/x86_64-gnu-tools/checktools.sh x.py /tmp/toolstate/toolstates.json windows |
ba9703b0 XL |
510 | RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --save-toolstates=/tmp/toolstate/toolstates.json |
511 | <<: *job-windows-xl | |
512 | ||
513 | # 32/64-bit MinGW builds. | |
514 | # | |
3dfed10e XL |
515 | # We are using MinGW with POSIX threads since LLVM requires |
516 | # C++'s std::thread which is disabled in libstdc++ with win32 threads. | |
1b1a35ee | 517 | # FIXME: Libc++ doesn't have this limitation so we can avoid |
3dfed10e | 518 | # winpthreads if we switch to it. |
ba9703b0 | 519 | # |
3dfed10e XL |
520 | # Instead of relying on the MinGW version installed on CI we download |
521 | # and install one ourselves so we won't be surprised by changes to CI's | |
ba9703b0 XL |
522 | # build image. |
523 | # | |
524 | # Finally, note that the downloads below are all in the `rust-lang-ci` S3 | |
3dfed10e | 525 | # bucket, but they clearly didn't originate there! The downloads originally |
ba9703b0 XL |
526 | # came from the mingw-w64 SourceForge download site. Unfortunately |
527 | # SourceForge is notoriously flaky, so we mirror it on our own infrastructure. | |
528 | ||
529 | - name: i686-mingw-1 | |
530 | env: | |
531 | RUST_CONFIGURE_ARGS: --build=i686-pc-windows-gnu | |
532 | SCRIPT: make ci-mingw-subset-1 | |
533 | CUSTOM_MINGW: 1 | |
534 | # FIXME(#59637) | |
535 | NO_DEBUG_ASSERTIONS: 1 | |
536 | NO_LLVM_ASSERTIONS: 1 | |
537 | <<: *job-windows-xl | |
538 | ||
539 | - name: i686-mingw-2 | |
540 | env: | |
541 | RUST_CONFIGURE_ARGS: --build=i686-pc-windows-gnu | |
542 | SCRIPT: make ci-mingw-subset-2 | |
543 | CUSTOM_MINGW: 1 | |
544 | <<: *job-windows-xl | |
545 | ||
546 | - name: x86_64-mingw-1 | |
547 | env: | |
548 | SCRIPT: make ci-mingw-subset-1 | |
1b1a35ee | 549 | RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-gnu --enable-profiler |
ba9703b0 XL |
550 | CUSTOM_MINGW: 1 |
551 | # FIXME(#59637) | |
552 | NO_DEBUG_ASSERTIONS: 1 | |
553 | NO_LLVM_ASSERTIONS: 1 | |
554 | <<: *job-windows-xl | |
555 | ||
556 | - name: x86_64-mingw-2 | |
557 | env: | |
558 | SCRIPT: make ci-mingw-subset-2 | |
1b1a35ee | 559 | RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-gnu --enable-profiler |
ba9703b0 XL |
560 | CUSTOM_MINGW: 1 |
561 | <<: *job-windows-xl | |
562 | ||
563 | - name: dist-x86_64-msvc | |
564 | env: | |
565 | RUST_CONFIGURE_ARGS: >- | |
566 | --build=x86_64-pc-windows-msvc | |
1b1a35ee | 567 | --host=x86_64-pc-windows-msvc |
ba9703b0 XL |
568 | --target=x86_64-pc-windows-msvc,aarch64-pc-windows-msvc |
569 | --enable-full-tools | |
570 | --enable-profiler | |
571 | SCRIPT: python x.py dist | |
572 | DIST_REQUIRE_ALL_TOOLS: 1 | |
573 | <<: *job-windows-xl | |
574 | ||
575 | - name: dist-i686-msvc | |
576 | env: | |
577 | RUST_CONFIGURE_ARGS: >- | |
578 | --build=i686-pc-windows-msvc | |
1b1a35ee XL |
579 | --host=i686-pc-windows-msvc |
580 | --target=i686-pc-windows-msvc,i586-pc-windows-msvc | |
ba9703b0 XL |
581 | --enable-full-tools |
582 | --enable-profiler | |
583 | SCRIPT: python x.py dist | |
584 | DIST_REQUIRE_ALL_TOOLS: 1 | |
585 | <<: *job-windows-xl | |
586 | ||
587 | - name: dist-i686-mingw | |
588 | env: | |
589 | RUST_CONFIGURE_ARGS: --build=i686-pc-windows-gnu --enable-full-tools --enable-profiler | |
590 | SCRIPT: python x.py dist | |
591 | CUSTOM_MINGW: 1 | |
592 | DIST_REQUIRE_ALL_TOOLS: 1 | |
593 | <<: *job-windows-xl | |
594 | ||
595 | - name: dist-x86_64-mingw | |
596 | env: | |
597 | SCRIPT: python x.py dist | |
598 | RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-gnu --enable-full-tools --enable-profiler | |
599 | CUSTOM_MINGW: 1 | |
600 | DIST_REQUIRE_ALL_TOOLS: 1 | |
601 | <<: *job-windows-xl | |
602 | ||
603 | - name: dist-x86_64-msvc-alt | |
604 | env: | |
605 | RUST_CONFIGURE_ARGS: --build=x86_64-pc-windows-msvc --enable-extended --enable-profiler | |
606 | SCRIPT: python x.py dist | |
607 | <<: *job-windows-xl | |
608 | ||
f035d41b XL |
609 | auto-fallible: |
610 | <<: *base-ci-job | |
611 | name: auto-fallible | |
612 | env: | |
f9652781 | 613 | <<: [*shared-ci-variables, *dummy-variables] |
f035d41b XL |
614 | if: github.event_name == 'push' && github.ref == 'refs/heads/auto' && github.repository == 'rust-lang-ci/rust' |
615 | strategy: | |
3dfed10e | 616 | fail-fast: false |
f035d41b XL |
617 | matrix: |
618 | include: | |
3dfed10e XL |
619 | ############################# |
620 | # Linux/Docker builders # | |
621 | ############################# | |
622 | ||
623 | - name: aarch64-gnu | |
624 | <<: *job-aarch64-linux | |
625 | ||
1b1a35ee XL |
626 | try: |
627 | <<: *base-ci-job | |
628 | name: try | |
629 | env: | |
630 | <<: [*shared-ci-variables, *prod-variables] | |
631 | if: github.event_name == 'push' && (github.ref == 'refs/heads/try' || github.ref == 'refs/heads/try-perf') && github.repository == 'rust-lang-ci/rust' | |
632 | strategy: | |
633 | matrix: | |
634 | include: | |
635 | - *dist-x86_64-linux | |
f035d41b | 636 | |
ba9703b0 XL |
637 | master: |
638 | name: master | |
639 | runs-on: ubuntu-latest | |
640 | env: | |
641 | <<: [*prod-variables] | |
642 | if: github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'rust-lang-ci/rust' | |
643 | steps: | |
644 | - name: checkout the source code | |
645 | uses: actions/checkout@v1 | |
646 | with: | |
647 | fetch-depth: 2 | |
648 | ||
649 | - name: publish toolstate | |
650 | run: src/ci/publish_toolstate.sh | |
f035d41b | 651 | shell: bash |
ba9703b0 XL |
652 | env: |
653 | TOOLSTATE_REPO_ACCESS_TOKEN: ${{ secrets.TOOLSTATE_REPO_ACCESS_TOKEN }} | |
f9f354fc | 654 | <<: *step |
ba9703b0 XL |
655 | |
656 | # These jobs don't actually test anything, but they're used to tell bors the | |
657 | # build completed, as there is no practical way to detect when a workflow is | |
658 | # successful listening to webhooks only. | |
659 | try-success: | |
660 | needs: [try] | |
3dfed10e | 661 | if: "success() && github.event_name == 'push' && (github.ref == 'refs/heads/try' || github.ref == 'refs/heads/try-perf') && github.repository == 'rust-lang-ci/rust'" |
ba9703b0 XL |
662 | <<: *base-success-job |
663 | try-failure: | |
664 | needs: [try] | |
3dfed10e | 665 | if: "!success() && github.event_name == 'push' && (github.ref == 'refs/heads/try' || github.ref == 'refs/heads/try-perf') && github.repository == 'rust-lang-ci/rust'" |
ba9703b0 XL |
666 | <<: *base-failure-job |
667 | auto-success: | |
668 | needs: [auto] | |
669 | if: "success() && github.event_name == 'push' && github.ref == 'refs/heads/auto' && github.repository == 'rust-lang-ci/rust'" | |
670 | <<: *base-success-job | |
671 | auto-failure: | |
672 | needs: [auto] | |
673 | if: "!success() && github.event_name == 'push' && github.ref == 'refs/heads/auto' && github.repository == 'rust-lang-ci/rust'" | |
674 | <<: *base-failure-job |