]> git.lizzy.rs Git - rust.git/blob - .github/workflows/ci.yml
Rollup merge of #70741 - DutchGhost:test-59023, r=Centril
[rust.git] / .github / workflows / ci.yml
1 #############################################################
2 #   WARNING: automatically generated file, DO NOT CHANGE!   #
3 #############################################################
4
5 # This file was automatically generated by the expand-yaml-anchors tool. The
6 # source file that generated this one is:
7 #
8 #   src/ci/github-actions/ci.yml
9 #
10 # Once you make changes to that file you need to run:
11 #
12 #   ./x.py run src/tools/expand-yaml-anchors/
13 #
14 # The CI build will fail if the tool is not run after changes to this file.
15
16 ---
17 name: CI
18 "on":
19   push:
20     branches:
21       - auto
22       - try
23       - master
24   pull_request:
25     branches:
26       - "**"
27 jobs:
28   pr:
29     name: PR
30     env:
31       CI_JOB_NAME: "${{ matrix.name }}"
32       SCCACHE_BUCKET: rust-lang-gha-caches
33       TOOLSTATE_REPO: "https://github.com/pietroalbini/rust-toolstate"
34     if: "github.event_name == 'pull_request'"
35     strategy:
36       matrix:
37         name:
38           - mingw-check
39           - x86_64-gnu-llvm-7
40           - x86_64-gnu-tools
41         include:
42           - name: mingw-check
43             os: ubuntu-latest-xl
44             env: {}
45           - name: x86_64-gnu-llvm-7
46             os: ubuntu-latest-xl
47             env: {}
48           - name: x86_64-gnu-tools
49             env:
50               CI_ONLY_WHEN_SUBMODULES_CHANGED: 1
51             os: ubuntu-latest-xl
52     timeout-minutes: 600
53     runs-on: "${{ matrix.os }}"
54     steps:
55       - name: disable git crlf conversion
56         run: git config --global core.autocrlf false
57         shell: bash
58       - name: checkout the source code
59         uses: actions/checkout@v1
60         with:
61           fetch-depth: 2
62       - name: configure GitHub Actions to kill the build when outdated
63         uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master
64         with:
65           github_token: "${{ secrets.github_token }}"
66         if: "success() && !env.SKIP_JOB && github.ref != 'refs/heads/try'"
67       - name: add extra environment variables
68         run: src/ci/scripts/setup-environment.sh
69         env:
70           EXTRA_VARIABLES: "${{ toJson(matrix.env) }}"
71         shell: "python src/ci/exec-with-shell.py {0}"
72         if: success() && !env.SKIP_JOB
73       - name: decide whether to skip this job
74         run: src/ci/scripts/should-skip-this.sh
75         shell: "python src/ci/exec-with-shell.py {0}"
76         if: success() && !env.SKIP_JOB
77       - name: collect CPU statistics
78         run: src/ci/scripts/collect-cpu-stats.sh
79         shell: "python src/ci/exec-with-shell.py {0}"
80         if: success() && !env.SKIP_JOB
81       - name: show the current environment
82         run: src/ci/scripts/dump-environment.sh
83         shell: "python src/ci/exec-with-shell.py {0}"
84         if: success() && !env.SKIP_JOB
85       - name: install awscli
86         run: src/ci/scripts/install-awscli.sh
87         shell: "python src/ci/exec-with-shell.py {0}"
88         if: success() && !env.SKIP_JOB
89       - name: install sccache
90         run: src/ci/scripts/install-sccache.sh
91         shell: "python src/ci/exec-with-shell.py {0}"
92         if: success() && !env.SKIP_JOB
93       - name: install clang
94         run: src/ci/scripts/install-clang.sh
95         shell: "python src/ci/exec-with-shell.py {0}"
96         if: success() && !env.SKIP_JOB
97       - name: install WIX
98         run: src/ci/scripts/install-wix.sh
99         shell: "python src/ci/exec-with-shell.py {0}"
100         if: success() && !env.SKIP_JOB
101       - name: install InnoSetup
102         run: src/ci/scripts/install-innosetup.sh
103         shell: "python src/ci/exec-with-shell.py {0}"
104         if: success() && !env.SKIP_JOB
105       - name: ensure the build happens on a partition with enough space
106         run: src/ci/scripts/symlink-build-dir.sh
107         shell: "python src/ci/exec-with-shell.py {0}"
108         if: success() && !env.SKIP_JOB
109       - name: disable git crlf conversion
110         run: src/ci/scripts/disable-git-crlf-conversion.sh
111         shell: "python src/ci/exec-with-shell.py {0}"
112         if: success() && !env.SKIP_JOB
113       - name: install MSYS2
114         run: src/ci/scripts/install-msys2.sh
115         shell: "python src/ci/exec-with-shell.py {0}"
116         if: success() && !env.SKIP_JOB
117       - name: install MSYS2 packages
118         run: src/ci/scripts/install-msys2-packages.sh
119         shell: "python src/ci/exec-with-shell.py {0}"
120         if: success() && !env.SKIP_JOB
121       - name: install MinGW
122         run: src/ci/scripts/install-mingw.sh
123         shell: "python src/ci/exec-with-shell.py {0}"
124         if: success() && !env.SKIP_JOB
125       - name: install ninja
126         run: src/ci/scripts/install-ninja.sh
127         shell: "python src/ci/exec-with-shell.py {0}"
128         if: success() && !env.SKIP_JOB
129       - name: enable ipv6 on Docker
130         run: src/ci/scripts/enable-docker-ipv6.sh
131         shell: "python src/ci/exec-with-shell.py {0}"
132         if: success() && !env.SKIP_JOB
133       - name: disable git crlf conversion
134         run: src/ci/scripts/disable-git-crlf-conversion.sh
135         shell: "python src/ci/exec-with-shell.py {0}"
136         if: success() && !env.SKIP_JOB
137       - name: checkout submodules
138         run: src/ci/scripts/checkout-submodules.sh
139         shell: "python src/ci/exec-with-shell.py {0}"
140         if: success() && !env.SKIP_JOB
141       - name: ensure line endings are correct
142         run: src/ci/scripts/verify-line-endings.sh
143         shell: "python src/ci/exec-with-shell.py {0}"
144         if: success() && !env.SKIP_JOB
145       - name: run the build
146         run: src/ci/scripts/run-build-from-ci.sh
147         env:
148           AWS_ACCESS_KEY_ID: "${{ env.CACHES_AWS_ACCESS_KEY_ID }}"
149           AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.CACHES_AWS_ACCESS_KEY_ID)] }}"
150           TOOLSTATE_REPO_ACCESS_TOKEN: "${{ secrets.TOOLSTATE_REPO_ACCESS_TOKEN }}"
151         shell: "python src/ci/exec-with-shell.py {0}"
152         if: success() && !env.SKIP_JOB
153       - name: upload artifacts to S3
154         run: src/ci/scripts/upload-artifacts.sh
155         env:
156           AWS_ACCESS_KEY_ID: "${{ env.ARTIFACTS_AWS_ACCESS_KEY_ID }}"
157           AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.ARTIFACTS_AWS_ACCESS_KEY_ID)] }}"
158         if: "success() && !env.SKIP_JOB && (github.event_name == 'push' || env.DEPLOY == '1' || env.DEPLOY_ALT == '1')"
159         shell: "python src/ci/exec-with-shell.py {0}"
160   try:
161     name: try
162     env:
163       CI_JOB_NAME: "${{ matrix.name }}"
164       SCCACHE_BUCKET: rust-lang-gha-caches
165       DEPLOY_BUCKET: rust-lang-gha
166       TOOLSTATE_REPO: "https://github.com/pietroalbini/rust-toolstate"
167       TOOLSTATE_ISSUES_API_URL: "https://api.github.com/repos/pietroalbini/rust-toolstate/issues"
168       TOOLSTATE_PUBLISH: 1
169       CACHES_AWS_ACCESS_KEY_ID: AKIA46X5W6CZOMUQATD5
170       ARTIFACTS_AWS_ACCESS_KEY_ID: AKIA46X5W6CZH5AYXDVF
171     if: "github.event_name == 'push' && github.ref == 'refs/heads/try' && github.repository == 'rust-lang-ci/rust'"
172     strategy:
173       matrix:
174         name:
175           - dist-x86_64-linux
176           - dist-x86_64-linux-alt
177         include:
178           - name: dist-x86_64-linux
179             os: ubuntu-latest-xl
180             env: {}
181           - name: dist-x86_64-linux-alt
182             env:
183               IMAGE: dist-x86_64-linux
184             os: ubuntu-latest-xl
185     timeout-minutes: 600
186     runs-on: "${{ matrix.os }}"
187     steps:
188       - name: disable git crlf conversion
189         run: git config --global core.autocrlf false
190         shell: bash
191       - name: checkout the source code
192         uses: actions/checkout@v1
193         with:
194           fetch-depth: 2
195       - name: configure GitHub Actions to kill the build when outdated
196         uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master
197         with:
198           github_token: "${{ secrets.github_token }}"
199         if: "success() && !env.SKIP_JOB && github.ref != 'refs/heads/try'"
200       - name: add extra environment variables
201         run: src/ci/scripts/setup-environment.sh
202         env:
203           EXTRA_VARIABLES: "${{ toJson(matrix.env) }}"
204         shell: "python src/ci/exec-with-shell.py {0}"
205         if: success() && !env.SKIP_JOB
206       - name: decide whether to skip this job
207         run: src/ci/scripts/should-skip-this.sh
208         shell: "python src/ci/exec-with-shell.py {0}"
209         if: success() && !env.SKIP_JOB
210       - name: collect CPU statistics
211         run: src/ci/scripts/collect-cpu-stats.sh
212         shell: "python src/ci/exec-with-shell.py {0}"
213         if: success() && !env.SKIP_JOB
214       - name: show the current environment
215         run: src/ci/scripts/dump-environment.sh
216         shell: "python src/ci/exec-with-shell.py {0}"
217         if: success() && !env.SKIP_JOB
218       - name: install awscli
219         run: src/ci/scripts/install-awscli.sh
220         shell: "python src/ci/exec-with-shell.py {0}"
221         if: success() && !env.SKIP_JOB
222       - name: install sccache
223         run: src/ci/scripts/install-sccache.sh
224         shell: "python src/ci/exec-with-shell.py {0}"
225         if: success() && !env.SKIP_JOB
226       - name: install clang
227         run: src/ci/scripts/install-clang.sh
228         shell: "python src/ci/exec-with-shell.py {0}"
229         if: success() && !env.SKIP_JOB
230       - name: install WIX
231         run: src/ci/scripts/install-wix.sh
232         shell: "python src/ci/exec-with-shell.py {0}"
233         if: success() && !env.SKIP_JOB
234       - name: install InnoSetup
235         run: src/ci/scripts/install-innosetup.sh
236         shell: "python src/ci/exec-with-shell.py {0}"
237         if: success() && !env.SKIP_JOB
238       - name: ensure the build happens on a partition with enough space
239         run: src/ci/scripts/symlink-build-dir.sh
240         shell: "python src/ci/exec-with-shell.py {0}"
241         if: success() && !env.SKIP_JOB
242       - name: disable git crlf conversion
243         run: src/ci/scripts/disable-git-crlf-conversion.sh
244         shell: "python src/ci/exec-with-shell.py {0}"
245         if: success() && !env.SKIP_JOB
246       - name: install MSYS2
247         run: src/ci/scripts/install-msys2.sh
248         shell: "python src/ci/exec-with-shell.py {0}"
249         if: success() && !env.SKIP_JOB
250       - name: install MSYS2 packages
251         run: src/ci/scripts/install-msys2-packages.sh
252         shell: "python src/ci/exec-with-shell.py {0}"
253         if: success() && !env.SKIP_JOB
254       - name: install MinGW
255         run: src/ci/scripts/install-mingw.sh
256         shell: "python src/ci/exec-with-shell.py {0}"
257         if: success() && !env.SKIP_JOB
258       - name: install ninja
259         run: src/ci/scripts/install-ninja.sh
260         shell: "python src/ci/exec-with-shell.py {0}"
261         if: success() && !env.SKIP_JOB
262       - name: enable ipv6 on Docker
263         run: src/ci/scripts/enable-docker-ipv6.sh
264         shell: "python src/ci/exec-with-shell.py {0}"
265         if: success() && !env.SKIP_JOB
266       - name: disable git crlf conversion
267         run: src/ci/scripts/disable-git-crlf-conversion.sh
268         shell: "python src/ci/exec-with-shell.py {0}"
269         if: success() && !env.SKIP_JOB
270       - name: checkout submodules
271         run: src/ci/scripts/checkout-submodules.sh
272         shell: "python src/ci/exec-with-shell.py {0}"
273         if: success() && !env.SKIP_JOB
274       - name: ensure line endings are correct
275         run: src/ci/scripts/verify-line-endings.sh
276         shell: "python src/ci/exec-with-shell.py {0}"
277         if: success() && !env.SKIP_JOB
278       - name: run the build
279         run: src/ci/scripts/run-build-from-ci.sh
280         env:
281           AWS_ACCESS_KEY_ID: "${{ env.CACHES_AWS_ACCESS_KEY_ID }}"
282           AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.CACHES_AWS_ACCESS_KEY_ID)] }}"
283           TOOLSTATE_REPO_ACCESS_TOKEN: "${{ secrets.TOOLSTATE_REPO_ACCESS_TOKEN }}"
284         shell: "python src/ci/exec-with-shell.py {0}"
285         if: success() && !env.SKIP_JOB
286       - name: upload artifacts to S3
287         run: src/ci/scripts/upload-artifacts.sh
288         env:
289           AWS_ACCESS_KEY_ID: "${{ env.ARTIFACTS_AWS_ACCESS_KEY_ID }}"
290           AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.ARTIFACTS_AWS_ACCESS_KEY_ID)] }}"
291         if: "success() && !env.SKIP_JOB && (github.event_name == 'push' || env.DEPLOY == '1' || env.DEPLOY_ALT == '1')"
292         shell: "python src/ci/exec-with-shell.py {0}"
293   auto:
294     name: auto
295     env:
296       CI_JOB_NAME: "${{ matrix.name }}"
297       SCCACHE_BUCKET: rust-lang-gha-caches
298       DEPLOY_BUCKET: rust-lang-gha
299       TOOLSTATE_REPO: "https://github.com/pietroalbini/rust-toolstate"
300       TOOLSTATE_ISSUES_API_URL: "https://api.github.com/repos/pietroalbini/rust-toolstate/issues"
301       TOOLSTATE_PUBLISH: 1
302       CACHES_AWS_ACCESS_KEY_ID: AKIA46X5W6CZOMUQATD5
303       ARTIFACTS_AWS_ACCESS_KEY_ID: AKIA46X5W6CZH5AYXDVF
304     if: "github.event_name == 'push' && github.ref == 'refs/heads/auto' && github.repository == 'rust-lang-ci/rust'"
305     strategy:
306       matrix:
307         name:
308           - arm-android
309           - armhf-gnu
310           - dist-aarch64-linux
311           - dist-android
312           - dist-arm-linux
313           - dist-armhf-linux
314           - dist-armv7-linux
315           - dist-i586-gnu-i586-i686-musl
316           - dist-i686-freebsd
317           - dist-i686-linux
318           - dist-i686-mingw
319           - dist-i686-msvc
320           - dist-mips-linux
321           - dist-mips64-linux
322           - dist-mips64el-linux
323           - dist-mipsel-linux
324           - dist-powerpc-linux
325           - dist-powerpc64-linux
326           - dist-powerpc64le-linux
327           - dist-s390x-linux
328           - dist-various-1
329           - dist-various-2
330           - dist-x86_64-apple
331           - dist-x86_64-apple-alt
332           - dist-x86_64-freebsd
333           - dist-x86_64-linux
334           - dist-x86_64-linux-alt
335           - dist-x86_64-mingw
336           - dist-x86_64-msvc
337           - dist-x86_64-msvc-alt
338           - dist-x86_64-musl
339           - dist-x86_64-netbsd
340           - i686-gnu
341           - i686-gnu-nopt
342           - i686-mingw-1
343           - i686-mingw-2
344           - i686-msvc-1
345           - i686-msvc-2
346           - mingw-check
347           - test-various
348           - wasm32
349           - x86_64-apple
350           - x86_64-gnu
351           - x86_64-gnu-aux
352           - x86_64-gnu-debug
353           - x86_64-gnu-distcheck
354           - x86_64-gnu-full-bootstrap
355           - x86_64-gnu-llvm-7
356           - x86_64-gnu-nopt
357           - x86_64-gnu-tools
358           - x86_64-mingw-1
359           - x86_64-mingw-2
360           - x86_64-msvc-1
361           - x86_64-msvc-2
362           - x86_64-msvc-aux
363           - x86_64-msvc-cargo
364           - x86_64-msvc-tools
365         include:
366           - name: arm-android
367             os: ubuntu-latest-xl
368             env: {}
369           - name: armhf-gnu
370             os: ubuntu-latest-xl
371             env: {}
372           - name: dist-aarch64-linux
373             os: ubuntu-latest-xl
374             env: {}
375           - name: dist-android
376             os: ubuntu-latest-xl
377             env: {}
378           - name: dist-arm-linux
379             os: ubuntu-latest-xl
380             env: {}
381           - name: dist-armhf-linux
382             os: ubuntu-latest-xl
383             env: {}
384           - name: dist-armv7-linux
385             os: ubuntu-latest-xl
386             env: {}
387           - name: dist-i586-gnu-i586-i686-musl
388             os: ubuntu-latest-xl
389             env: {}
390           - name: dist-i686-freebsd
391             os: ubuntu-latest-xl
392             env: {}
393           - name: dist-i686-linux
394             os: ubuntu-latest-xl
395             env: {}
396           - name: dist-mips-linux
397             os: ubuntu-latest-xl
398             env: {}
399           - name: dist-mips64-linux
400             os: ubuntu-latest-xl
401             env: {}
402           - name: dist-mips64el-linux
403             os: ubuntu-latest-xl
404             env: {}
405           - name: dist-mipsel-linux
406             os: ubuntu-latest-xl
407             env: {}
408           - name: dist-powerpc-linux
409             os: ubuntu-latest-xl
410             env: {}
411           - name: dist-powerpc64-linux
412             os: ubuntu-latest-xl
413             env: {}
414           - name: dist-powerpc64le-linux
415             os: ubuntu-latest-xl
416             env: {}
417           - name: dist-s390x-linux
418             os: ubuntu-latest-xl
419             env: {}
420           - name: dist-various-1
421             os: ubuntu-latest-xl
422             env: {}
423           - name: dist-various-2
424             os: ubuntu-latest-xl
425             env: {}
426           - name: dist-x86_64-freebsd
427             os: ubuntu-latest-xl
428             env: {}
429           - name: dist-x86_64-linux
430             os: ubuntu-latest-xl
431             env: {}
432           - name: dist-x86_64-linux-alt
433             env:
434               IMAGE: dist-x86_64-linux
435             os: ubuntu-latest-xl
436           - name: dist-x86_64-musl
437             os: ubuntu-latest-xl
438             env: {}
439           - name: dist-x86_64-netbsd
440             os: ubuntu-latest-xl
441             env: {}
442           - name: i686-gnu
443             os: ubuntu-latest-xl
444             env: {}
445           - name: i686-gnu-nopt
446             os: ubuntu-latest-xl
447             env: {}
448           - name: mingw-check
449             os: ubuntu-latest-xl
450             env: {}
451           - name: test-various
452             os: ubuntu-latest-xl
453             env: {}
454           - name: wasm32
455             os: ubuntu-latest-xl
456             env: {}
457           - name: x86_64-gnu
458             os: ubuntu-latest-xl
459             env: {}
460           - name: x86_64-gnu-aux
461             os: ubuntu-latest-xl
462             env: {}
463           - name: x86_64-gnu-debug
464             os: ubuntu-latest-xl
465             env: {}
466           - name: x86_64-gnu-distcheck
467             os: ubuntu-latest-xl
468             env: {}
469           - name: x86_64-gnu-full-bootstrap
470             os: ubuntu-latest-xl
471             env: {}
472           - name: x86_64-gnu-llvm-7
473             env:
474               RUST_BACKTRACE: 1
475             os: ubuntu-latest-xl
476           - name: x86_64-gnu-nopt
477             os: ubuntu-latest-xl
478             env: {}
479           - name: x86_64-gnu-tools
480             env:
481               DEPLOY_TOOLSTATES_JSON: toolstates-linux.json
482             os: ubuntu-latest-xl
483           - name: dist-x86_64-apple
484             env:
485               SCRIPT: "./x.py dist"
486               RUST_CONFIGURE_ARGS: "--target=aarch64-apple-ios,x86_64-apple-ios --enable-full-tools --enable-sanitizers --enable-profiler --set rust.jemalloc"
487               RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
488               MACOSX_DEPLOYMENT_TARGET: 10.7
489               NO_LLVM_ASSERTIONS: 1
490               NO_DEBUG_ASSERTIONS: 1
491               DIST_REQUIRE_ALL_TOOLS: 1
492             os: macos-latest
493           - name: dist-x86_64-apple-alt
494             env:
495               SCRIPT: "./x.py dist"
496               RUST_CONFIGURE_ARGS: "--enable-extended --enable-profiler --set rust.jemalloc"
497               RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
498               MACOSX_DEPLOYMENT_TARGET: 10.7
499               NO_LLVM_ASSERTIONS: 1
500               NO_DEBUG_ASSERTIONS: 1
501             os: macos-latest
502           - name: x86_64-apple
503             env:
504               SCRIPT: "./x.py test"
505               RUST_CONFIGURE_ARGS: "--build=x86_64-apple-darwin --enable-sanitizers --enable-profiler --set rust.jemalloc"
506               RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
507               MACOSX_DEPLOYMENT_TARGET: 10.8
508               MACOSX_STD_DEPLOYMENT_TARGET: 10.7
509               NO_LLVM_ASSERTIONS: 1
510               NO_DEBUG_ASSERTIONS: 1
511             os: macos-latest
512           - name: x86_64-msvc-1
513             env:
514               RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc --enable-profiler"
515               SCRIPT: make ci-subset-1
516               NO_DEBUG_ASSERTIONS: 1
517               NO_LLVM_ASSERTIONS: 1
518             os: windows-latest-xl
519           - name: x86_64-msvc-2
520             env:
521               RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc --enable-profiler"
522               SCRIPT: make ci-subset-2
523             os: windows-latest-xl
524           - name: i686-msvc-1
525             env:
526               RUST_CONFIGURE_ARGS: "--build=i686-pc-windows-msvc"
527               SCRIPT: make ci-subset-1
528               NO_DEBUG_ASSERTIONS: 1
529               NO_LLVM_ASSERTIONS: 1
530             os: windows-latest-xl
531           - name: i686-msvc-2
532             env:
533               RUST_CONFIGURE_ARGS: "--build=i686-pc-windows-msvc"
534               SCRIPT: make ci-subset-2
535               NO_DEBUG_ASSERTIONS: 1
536               NO_LLVM_ASSERTIONS: 1
537             os: windows-latest-xl
538           - name: x86_64-msvc-aux
539             env:
540               RUST_CHECK_TARGET: check-aux EXCLUDE_CARGO=1
541               RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc"
542             os: windows-latest-xl
543           - name: x86_64-msvc-cargo
544             env:
545               SCRIPT: python x.py test src/tools/cargotest src/tools/cargo
546               RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc"
547               VCVARS_BAT: vcvars64.bat
548               NO_DEBUG_ASSERTIONS: 1
549               NO_LLVM_ASSERTIONS: 1
550             os: windows-latest-xl
551           - name: x86_64-msvc-tools
552             env:
553               SCRIPT: src/ci/docker/x86_64-gnu-tools/checktools.sh x.py /tmp/toolstate/toolstates.json windows
554               RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc --save-toolstates=/tmp/toolstate/toolstates.json"
555             os: windows-latest-xl
556           - name: i686-mingw-1
557             env:
558               RUST_CONFIGURE_ARGS: "--build=i686-pc-windows-gnu"
559               SCRIPT: make ci-mingw-subset-1
560               CUSTOM_MINGW: 1
561               NO_DEBUG_ASSERTIONS: 1
562               NO_LLVM_ASSERTIONS: 1
563             os: windows-latest-xl
564           - name: i686-mingw-2
565             env:
566               RUST_CONFIGURE_ARGS: "--build=i686-pc-windows-gnu"
567               SCRIPT: make ci-mingw-subset-2
568               CUSTOM_MINGW: 1
569             os: windows-latest-xl
570           - name: x86_64-mingw-1
571             env:
572               SCRIPT: make ci-mingw-subset-1
573               RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-gnu"
574               CUSTOM_MINGW: 1
575               NO_DEBUG_ASSERTIONS: 1
576               NO_LLVM_ASSERTIONS: 1
577             os: windows-latest-xl
578           - name: x86_64-mingw-2
579             env:
580               SCRIPT: make ci-mingw-subset-2
581               RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-gnu"
582               CUSTOM_MINGW: 1
583             os: windows-latest-xl
584           - name: dist-x86_64-msvc
585             env:
586               RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc --target=x86_64-pc-windows-msvc,aarch64-pc-windows-msvc --enable-full-tools --enable-profiler"
587               SCRIPT: python x.py dist
588               DIST_REQUIRE_ALL_TOOLS: 1
589             os: windows-latest-xl
590           - name: dist-i686-msvc
591             env:
592               RUST_CONFIGURE_ARGS: "--build=i686-pc-windows-msvc --target=i586-pc-windows-msvc --enable-full-tools --enable-profiler"
593               SCRIPT: python x.py dist
594               DIST_REQUIRE_ALL_TOOLS: 1
595             os: windows-latest-xl
596           - name: dist-i686-mingw
597             env:
598               RUST_CONFIGURE_ARGS: "--build=i686-pc-windows-gnu --enable-full-tools --enable-profiler"
599               SCRIPT: python x.py dist
600               CUSTOM_MINGW: 1
601               DIST_REQUIRE_ALL_TOOLS: 1
602             os: windows-latest-xl
603           - name: dist-x86_64-mingw
604             env:
605               SCRIPT: python x.py dist
606               RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-gnu --enable-full-tools --enable-profiler"
607               CUSTOM_MINGW: 1
608               DIST_REQUIRE_ALL_TOOLS: 1
609             os: windows-latest-xl
610           - name: dist-x86_64-msvc-alt
611             env:
612               RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc --enable-extended --enable-profiler"
613               SCRIPT: python x.py dist
614             os: windows-latest-xl
615     timeout-minutes: 600
616     runs-on: "${{ matrix.os }}"
617     steps:
618       - name: disable git crlf conversion
619         run: git config --global core.autocrlf false
620         shell: bash
621       - name: checkout the source code
622         uses: actions/checkout@v1
623         with:
624           fetch-depth: 2
625       - name: configure GitHub Actions to kill the build when outdated
626         uses: rust-lang/simpleinfra/github-actions/cancel-outdated-builds@master
627         with:
628           github_token: "${{ secrets.github_token }}"
629         if: "success() && !env.SKIP_JOB && github.ref != 'refs/heads/try'"
630       - name: add extra environment variables
631         run: src/ci/scripts/setup-environment.sh
632         env:
633           EXTRA_VARIABLES: "${{ toJson(matrix.env) }}"
634         shell: "python src/ci/exec-with-shell.py {0}"
635         if: success() && !env.SKIP_JOB
636       - name: decide whether to skip this job
637         run: src/ci/scripts/should-skip-this.sh
638         shell: "python src/ci/exec-with-shell.py {0}"
639         if: success() && !env.SKIP_JOB
640       - name: collect CPU statistics
641         run: src/ci/scripts/collect-cpu-stats.sh
642         shell: "python src/ci/exec-with-shell.py {0}"
643         if: success() && !env.SKIP_JOB
644       - name: show the current environment
645         run: src/ci/scripts/dump-environment.sh
646         shell: "python src/ci/exec-with-shell.py {0}"
647         if: success() && !env.SKIP_JOB
648       - name: install awscli
649         run: src/ci/scripts/install-awscli.sh
650         shell: "python src/ci/exec-with-shell.py {0}"
651         if: success() && !env.SKIP_JOB
652       - name: install sccache
653         run: src/ci/scripts/install-sccache.sh
654         shell: "python src/ci/exec-with-shell.py {0}"
655         if: success() && !env.SKIP_JOB
656       - name: install clang
657         run: src/ci/scripts/install-clang.sh
658         shell: "python src/ci/exec-with-shell.py {0}"
659         if: success() && !env.SKIP_JOB
660       - name: install WIX
661         run: src/ci/scripts/install-wix.sh
662         shell: "python src/ci/exec-with-shell.py {0}"
663         if: success() && !env.SKIP_JOB
664       - name: install InnoSetup
665         run: src/ci/scripts/install-innosetup.sh
666         shell: "python src/ci/exec-with-shell.py {0}"
667         if: success() && !env.SKIP_JOB
668       - name: ensure the build happens on a partition with enough space
669         run: src/ci/scripts/symlink-build-dir.sh
670         shell: "python src/ci/exec-with-shell.py {0}"
671         if: success() && !env.SKIP_JOB
672       - name: disable git crlf conversion
673         run: src/ci/scripts/disable-git-crlf-conversion.sh
674         shell: "python src/ci/exec-with-shell.py {0}"
675         if: success() && !env.SKIP_JOB
676       - name: install MSYS2
677         run: src/ci/scripts/install-msys2.sh
678         shell: "python src/ci/exec-with-shell.py {0}"
679         if: success() && !env.SKIP_JOB
680       - name: install MSYS2 packages
681         run: src/ci/scripts/install-msys2-packages.sh
682         shell: "python src/ci/exec-with-shell.py {0}"
683         if: success() && !env.SKIP_JOB
684       - name: install MinGW
685         run: src/ci/scripts/install-mingw.sh
686         shell: "python src/ci/exec-with-shell.py {0}"
687         if: success() && !env.SKIP_JOB
688       - name: install ninja
689         run: src/ci/scripts/install-ninja.sh
690         shell: "python src/ci/exec-with-shell.py {0}"
691         if: success() && !env.SKIP_JOB
692       - name: enable ipv6 on Docker
693         run: src/ci/scripts/enable-docker-ipv6.sh
694         shell: "python src/ci/exec-with-shell.py {0}"
695         if: success() && !env.SKIP_JOB
696       - name: disable git crlf conversion
697         run: src/ci/scripts/disable-git-crlf-conversion.sh
698         shell: "python src/ci/exec-with-shell.py {0}"
699         if: success() && !env.SKIP_JOB
700       - name: checkout submodules
701         run: src/ci/scripts/checkout-submodules.sh
702         shell: "python src/ci/exec-with-shell.py {0}"
703         if: success() && !env.SKIP_JOB
704       - name: ensure line endings are correct
705         run: src/ci/scripts/verify-line-endings.sh
706         shell: "python src/ci/exec-with-shell.py {0}"
707         if: success() && !env.SKIP_JOB
708       - name: run the build
709         run: src/ci/scripts/run-build-from-ci.sh
710         env:
711           AWS_ACCESS_KEY_ID: "${{ env.CACHES_AWS_ACCESS_KEY_ID }}"
712           AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.CACHES_AWS_ACCESS_KEY_ID)] }}"
713           TOOLSTATE_REPO_ACCESS_TOKEN: "${{ secrets.TOOLSTATE_REPO_ACCESS_TOKEN }}"
714         shell: "python src/ci/exec-with-shell.py {0}"
715         if: success() && !env.SKIP_JOB
716       - name: upload artifacts to S3
717         run: src/ci/scripts/upload-artifacts.sh
718         env:
719           AWS_ACCESS_KEY_ID: "${{ env.ARTIFACTS_AWS_ACCESS_KEY_ID }}"
720           AWS_SECRET_ACCESS_KEY: "${{ secrets[format('AWS_SECRET_ACCESS_KEY_{0}', env.ARTIFACTS_AWS_ACCESS_KEY_ID)] }}"
721         if: "success() && !env.SKIP_JOB && (github.event_name == 'push' || env.DEPLOY == '1' || env.DEPLOY_ALT == '1')"
722         shell: "python src/ci/exec-with-shell.py {0}"
723   master:
724     name: master
725     runs-on: ubuntu-latest
726     env:
727       SCCACHE_BUCKET: rust-lang-gha-caches
728       DEPLOY_BUCKET: rust-lang-gha
729       TOOLSTATE_REPO: "https://github.com/pietroalbini/rust-toolstate"
730       TOOLSTATE_ISSUES_API_URL: "https://api.github.com/repos/pietroalbini/rust-toolstate/issues"
731       TOOLSTATE_PUBLISH: 1
732       CACHES_AWS_ACCESS_KEY_ID: AKIA46X5W6CZOMUQATD5
733       ARTIFACTS_AWS_ACCESS_KEY_ID: AKIA46X5W6CZH5AYXDVF
734     if: "github.event_name == 'push' && github.ref == 'refs/heads/master' && github.repository == 'rust-lang-ci/rust'"
735     steps:
736       - name: checkout the source code
737         uses: actions/checkout@v1
738         with:
739           fetch-depth: 2
740       - name: publish toolstate
741         run: src/ci/publish_toolstate.sh
742         env:
743           TOOLSTATE_REPO_ACCESS_TOKEN: "${{ secrets.TOOLSTATE_REPO_ACCESS_TOKEN }}"
744         shell: "python src/ci/exec-with-shell.py {0}"
745         if: success() && !env.SKIP_JOB
746   try-success:
747     needs:
748       - try
749     if: "success() && github.event_name == 'push' && github.ref == 'refs/heads/try' && github.repository == 'rust-lang-ci/rust'"
750     steps:
751       - name: mark the job as a success
752         run: exit 0
753     name: bors build finished
754     runs-on: ubuntu-latest
755   try-failure:
756     needs:
757       - try
758     if: "!success() && github.event_name == 'push' && github.ref == 'refs/heads/try' && github.repository == 'rust-lang-ci/rust'"
759     steps:
760       - name: mark the job as a failure
761         run: exit 1
762     name: bors build finished
763     runs-on: ubuntu-latest
764   auto-success:
765     needs:
766       - auto
767     if: "success() && github.event_name == 'push' && github.ref == 'refs/heads/auto' && github.repository == 'rust-lang-ci/rust'"
768     steps:
769       - name: mark the job as a success
770         run: exit 0
771     name: bors build finished
772     runs-on: ubuntu-latest
773   auto-failure:
774     needs:
775       - auto
776     if: "!success() && github.event_name == 'push' && github.ref == 'refs/heads/auto' && github.repository == 'rust-lang-ci/rust'"
777     steps:
778       - name: mark the job as a failure
779         run: exit 1
780     name: bors build finished
781     runs-on: ubuntu-latest