about summary refs log tree commit diff
path: root/src/ci
AgeCommit message (Collapse)AuthorLines
2025-09-141.90.0 stable releaseMark Rousskov-1/+1
2025-08-21Demote x86_64-apple-darwin to Tier 2 with host toolsJake Goulding-30/+15
Switch to only using aarch64 runners (implying we are now cross-compiling) and stop running tests. In the future, we could enable (some?) tests via Rosetta 2. (cherry picked from commit c574c91e5739519b2fd3fdb5f07fa6e102705703)
2025-08-15Revert #143031 and #140772 due to #144533Mateusz Mikuła-118/+18
Revert <https://github.com/rust-lang/rust/pull/143031> and <https://github.com/rust-lang/rust/pull/140772> due to the issue with host tools reported in <https://github.com/rust-lang/rust/issue/144533>. This reverts commits 508021aa4320f1feb4c7a783ee16c2feebc9249a and d577b39c5a39796e911f885c9a354074b52c25ab. The decision was made in <https://github.com/rust-lang/rust/pull/144659#issuecomment-3182163412>. Tracking issue: <https://github.com/rust-lang/rust/issue/145435>
2025-08-04bump channelBoxy-1/+1
2025-07-31Rollup merge of #144053 - Kobzol:ci-remove-install-rust, r=marcoieniSamuel Tardieu-15/+0
Remove install Rust script from CI Windows ARM images should contain Rust now (https://github.com/actions/partner-runner-images/issues/77#issuecomment-3082613685). CC dpaoliello try-job: `*aarch64-msvc*`
2025-07-30Rollup merge of #144675 - jieyouxu:compiletest-staging, r=KobzolSamuel Tardieu-2/+2
Reject running `compiletest` self-tests against stage 0 rustc unless explicitly allowed Currently, in `pr-check-1`, we run `python3 ../x.py test --stage 0 src/tools/compiletest`, which is `compiletest` self-tests against stage 0 rustc. This makes it very annoying for PRs wanting to change target spec JSON format, which `compiletest` depends on for target information, as otherwise `compiletest` would have to know how to handle 2 different target spec JSON formats and know when to pick which. Instead of doing that, we change `compiletest` self-tests to reject running against stage 0 `rustc` *unless* explicitly allowed with `build.compiletest-allow-stage0=true`. `build.compiletest-allow-stage0` is a proper bootstrap config option in favor of the ad-hoc `COMPILETEST_FORCE_STAGE0` env var. This means that: - `./x test src/tools/compiletest --stage=0` is not allowed, unless `build.compiletest-allow-stage0=true` is set. In this scenario, `compiletest` self-tests should be expected to fail unless the stage 0 `rustc` as provided is like codegen_cranelift where it's *actually* built from in-tree `rustc` sources. - In CI, we change `./x test src/tools/compiletest --stage=0` to `./x test src/tools/compiletest --stage=1`, and move it to `pr-check-2`. Yes, this involves building the stage 1 compiler, but `pr-check-2` already has to build stage 1 compiler to test stage 1 library crates. - Crucially, this means that **`compiletest` is only intended to support one target spec JSON format**, namely the one corresponding to the in-tree `rustc`. - This should preserve the `compiletest-use-stage0-libtest` UX optimization where changing `compiler/` tree should still not require rebuilding `compiletest` as long as `build.compiletest-use-stage0-libtest=true`, as that should remain orthogonal. This is completely unlike my previous attempt at https://github.com/rust-lang/rust/pull/144563 that tries to do a way more invasive change which would cause the rebuild problem. Best reviewed commit-by-commit. --- r? `@Kobzol`
2025-07-30Run `compiletest` self-tests against stage 1 rustcJieyou Xu-2/+2
And move `./x test compiletest --stage=1` to `pr-check-2`, where testing library artifacts already requires building the stage 1 compiler.
2025-07-30Auto merge of #144305 - ChrisDenton:win-free-disk-space, r=marcoienibors-273/+308
Free disk space on Windows 2025 runners I've managed to reduce the time deletion takes by: - Using powershell, which is generally faster for filesystem operations than msys2 - Performing deletions concurrently then waiting for them all to complete It still takes 2-10 mins but that's not too bad.
2025-07-30Free disk space on Windows 2025 runnersChris Denton-273/+308
2025-07-29Rollup merge of #144586 - alexcrichton:update-weasi-sdk, r=Mark-SimulacrumJacob Pratt-4/+4
Update wasi-sdk to 27.0 in CI This updates the wasi-sdk used in CI to build release binaries and run CI with. No major motivation beyond keeping things up-to-date and following the development of wasi-sdk.
2025-07-29Update wasi-sdk to 27.0 in CIAlex Crichton-4/+4
This updates the wasi-sdk used in CI to build release binaries and run CI with. No major motivation beyond keeping things up-to-date and following the development of wasi-sdk.
2025-07-29Rollup merge of #144367 - shepmaster:reduce-x86-macos-runner-usage, ↵Stuart Cook-1/+1
r=Mark-Simulacrum Move dist-apple-various from x86_64 to aarch64 `macos-13` is going away soonish.
2025-07-27Rollup merge of #144454 - folkertdev:uefi-tests, r=jieyouxuMatthias Krüger-214/+3
move uefi test to run-make Turn the `uefi` test into a more standard `run-make` test, and execute it using the `test-various` CI job like before. This is just a straightforward translation of the python code, but using `run-make` to supply the target (hence the 3 separate calls in the docker file). r? ```@jieyouxu``` cc ```@nicholasbishop``` try-job: test-various
2025-07-26move uefi test to run-makeFolkert de Vries-214/+3
2025-07-25Check `./x check bootstrap` in `pr-check-1`Jieyou Xu-0/+1
This check is relatively cheap, and is a quick way to root out breaking check flow of `bootstrap` itself.
2025-07-23Auto merge of #144244 - jieyouxu:pr-full-ci, r=Kobzolbors-11/+352
Enforce that PR CI jobs are a subset of Auto CI jobs modulo carve-outs ### Background Currently, it is possible for a PR with red PR-only CI to pass Auto CI, then all subsequent PR CI runs will be red until that is fixed, even in completely unrelated PRs. For instance, this happened with PR-CI-only Spellcheck (rust-lang/rust#144183). See more discussions at [#t-infra > Spellcheck workflow now fails on all PRs (tree bad?)](https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Spellcheck.20workflow.20now.20fails.20on.20all.20PRs.20.28tree.20bad.3F.29/with/529769404). ### CI invariant: PR CI jobs are a subset of Auto CI jobs modulo carve-outs To prevent red PR CI in completely unrelated subsequent PRs and PR CI runs, we need to maintain an invariant that **PR CI jobs are a subset of Auto CI jobs modulo carve-outs**. This is **not** a "strict" subset relationship: some jobs necessarily have to differ under PR CI and Auto CI environments, at least in the current setup. Still, we can try to enforce a weaker "subset modulo carve-outs" relationship between CI jobs and their corresponding Auto jobs. For instance: - `x86_64-gnu-tools` will have `auto`-only env vars like `DEPLOY_TOOLSTATES_JSON: toolstates-linux.json`. - `tidy` will want to `continue_on_error: true` in PR CI to allow for more "useful" compilation errors to also be reported, whereas it should be `continue_on_error: false` in Auto CI to prevent wasting Auto CI resources. The **carve-outs** are: 1. `env` variables. 2. `continue_on_error`. We enforce this invariant through `citool`, so only affects job definitions that are handled by `citool`. Notably, this is not sufficient *alone* to address the CI-only Spellcheck issue (rust-lang/rust#144183). To carry out this enforcement, we modify `citool` to auto-register PR jobs as Auto jobs with `continue_on_error` overridden to `false` **unless** there's an overriding Auto job for the PR job of the same name that only differs by the permitted **carve-outs**. ### Addressing the Spellcheck PR-only CI issue Note that Spellcheck currently does not go through `citool` or `bootstrap`, and is its own GitHub Actions workflow. To actually address the PR-CI-only Spellcheck issue (rust-lang/rust#144183), and carry out the subset-modulo-carve-outs enforcement universally, this PR additionally **removes the current Spellcheck implementation** (a separate GitHub Actions Workflow). That is incompatible with Homu unless we do some hacks in the main CI workflow. This effectively partially reverts rust-lang/rust#134006 (the separate workflow part, not the tidy extra checks component), but is not prejudice against relanding the `typos`-based spellcheck in another implementation that goes through the usual bootstrap CI workflow so that it does work with Homu. The `typos`-based spellcheck seems to have a good false-positive rate. Closes rust-lang/rust#144183. --- r? infra-ci
2025-07-23Move `dist-apple-various` from x86_64 to aarch64Jake Goulding-1/+1
`macos-13` is going away soonish.
2025-07-22Auto merge of #144249 - GuillaumeGomez:asm-tests, r=jieyouxubors-3/+3
Rename `tests/{assembly,codegen}` into `tests/{assembly,codegen}-llvm` and ignore these testsuites if configured backend doesn't match Follow-up of https://github.com/rust-lang/rust/pull/144125. This PR changes `compiletest` so that `asm` tests are only run if they match the current codegen backend. To better reflect it, I renamed the `tests/ui/asm` folder into `tests/ui/asm-llvm`. Like that, we can add new asm tests for other backends if we want without needing to add extra code to `compiletest`. Next step will be to use the new code annotations added in rust-lang/rust#144125 to ignore ui tests failing in cg_gcc until it's fixed on our side. cc `@antoyo` `@oli-obk` r? `@Kobzol`
2025-07-22Rename `tests/codegen` into `tests/codegen-llvm`Guillaume Gomez-1/+1
2025-07-22Rename `tests/assembly` into `tests/assembly-llvm`Guillaume Gomez-2/+2
2025-07-22Rollup merge of #142924 - lolbinarycat:tidy-js-extra-checks, r=KobzolMatthias Krüger-9/+2
tidy: move rustdoc js stuff into a tidy extra check Most of these were factored out of CI scripts, but `eslint` in particular was previously implemented with its own special cased logic. A new option has been added to bootstrap, `build.tidy-extra-checks`, which serves as a default value for the `--extra-checks` flag. This is mostly for the benefit of rustdoc js maintainers, but should also help bootstrap py maintainers. Additionally, `--extra-checks=cpp` has been documented. I'm not super happy with how long the extra check names are in comparison to the others (in particular `typecheck`), but I couldn't think of anything better (I didn't want to name it `tsc` on the off chance we want to switch to a different typechecking engine in the future). It would be nice to convert the extra checks arg into a proper enum, both for warning on unknown values and to provide better shell completion. r? ```@GuillaumeGomez``` Fixes: https://github.com/rust-lang/rust/issues/144093
2025-07-21Update `jobs.yml` docs to reflect subset-modulo-carve-outs relationshipJieyou Xu-6/+19
2025-07-21Enforce PR CI jobs are a subset of Auto CI jobs (modulo carve-outs)Jieyou Xu-5/+333
To prevent possibility of a PR with red PR-only CI passing Auto CI, then all subsequent PR CI runs will be red until that is fixed. Note that this is **not** a "strict" subset relationship: some jobs necessarily have to differ under PR CI and Auto CI environments. For instance: - `x86_64-gnu-tools` will have auto-only env vars like `DEPLOY_TOOLSTATES_JSON: toolstates-linux.json`. - `tidy` will want to `continue_on_error: true` in PR CI to allow for more "useful" compilation errors to also be reported, whereas it needs to `continue_on_error: false` in Auto CI to prevent wasting Auto CI resources. The carve-outs are: 1. `env` variables. 2. `continue_on_error`.
2025-07-20Rollup merge of #144196 - ChrisDenton:init-mingw, r=mati865Matthias Krüger-0/+5
Initialize mingw for the runner's user This is apparently the more proper fix to https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Spurious.20bors.20CI.20failures/near/528915775 But let's see if it works.
2025-07-19Initialize mingw for the runner's userChris Denton-0/+5
2025-07-19tidy: use a lockfile for js tools instead of npxbinarycat-4/+0
this makes us less vulnerable to MITM and supply chain attacks. it also means that the CI scripts are no longer responsible for tracking the versions of these tools. it should also avoid the situation where local tsc and CI disagree on the presense of errors due to them being different versions.
2025-07-19update CI to use new tidy extra checks for rustdoc jsbinarycat-5/+2
2025-07-18Rename optional-mingw-check to optional-pr-checkChris Denton-2/+2
2025-07-17ci: use windows 22 for all free runnersMarcoIeni-2/+4
2025-07-17Remove install Rust script from CIJakub Beránek-15/+0
Windows ARM images should contain Rust now.
2025-07-17Rollup merge of #143964 - nikic:docker-script-arg, r=marcoieniLeón Orell Valerian Liehr-41/+32
Fix handling of SCRIPT_ARG in docker images Instead of making this a build parameter, pass the SCRIPT as an environment variable. To this purpose, normalize on always referring to a script in `/scripts`. For i686-gnu-nopt-2 I had to create a separate script, because Docker seems to be really terrible at command line argument parsing, so it's not possible to pass an environment variable that contains whitespace. Fixes https://github.com/rust-lang/rust/issues/143962. try-job: `dist-x86_64-linux` try-job: `i686-gnu-nopt-*` try-job: `i686-gnu-*` try-job: `x86_64-gnu-llvm-19-*` try-job: `x86_64-gnu-llvm-20-*`
2025-07-17Rollup merge of #143851 - lolbinarycat:bootstrap-node_modules, r=KobzolLeón Orell Valerian Liehr-20/+0
ci cleanup: rustdoc-gui-test now installs browser-ui-test this removes the need for --unsafe-perm in the Dockerfile. cc ```@GuillaumeGomez``` ```@Kobzol```
2025-07-15ci cleanup: rustdoc-gui-test now installs browser-ui-testbinarycat-20/+0
this removes the need for --unsafe-perm in the Dockerfile.
2025-07-15Fix handling of SCRIPT_ARG in docker imagesNikita Popov-41/+32
Instead of making this a build parameter, pass the SCRIPT as an environment variable. To this purpose, normalize on always referring to a script in `/scripts`. For i686-gnu-nopt-2 I had to create a separate script, because Docker seems to be really terrible at command line argument parsing, so it's not possible to pass an environment variable that contains whitespace.
2025-07-13Rollup merge of #143786 - nikic:ci-job-name-fallback, r=marcoieniMatthias Krüger-1/+1
Fix fallback for CI_JOB_NAME If CI_JOB_NAME is not specified, it's supposed to fall back to the image name, which is `$image`, not `$IMAGE`. Failing to set the correct CI_JOB_NAME causes failures when running `dist-ohos-*` images locally.
2025-07-11Fix fallback for CI_JOB_NAMENikita Popov-1/+1
If CI_JOB_NAME is not specified, it's supposed to fall back to the image name, which is `$image`, not `$IMAGE`. Failing to set the correct CI_JOB_NAME causes failures when running `dist-ohos-*` images locally.
2025-07-10Rollup merge of #140136 - dpaoliello:arm64winci, r=KobzolTrevor Gross-5/+47
Add an aarch64-msvc build running on ARM64 Windows Resurrecting rust-lang/rust#126341 Per <https://github.com/rust-lang/rfcs/pull/3817> we intend to promote `aarch64-pc-windows-msvc` to Tier 1. As part of that work, we are adding a pre-merge CI job to validate that changes do not break this target. Additionally, for consistency, the `dist-aarch64-msvc` job will also be run on Arm64 Windows runners. r? ``@Kobzol`` try-job: `*aarch64-msvc*`
2025-07-07Rollup merge of #143415 - Gelbpunkt:cleanup-dist-ppc64le-toolchain, r=marcoieni许杰友 Jieyou Xu (Joe)-90/+7
Get rid of build-powerpc64le-toolchain.sh The dist-powerpc64le-linux-musl runner never actually used the toolchain that the script produced, it instead used the one from crosstool-ng. The dist-powerpc64le-linux-gnu runner did use it, from what I can tell mainly to get a glibc 2.17 version with ppc64le support backported. Since crosstool-ng has the necessary patches, we can just use crosstool-ng to get an appropriate toolchain. While at it, use kernel 3.10 headers since that's the version documented in platform support for this target. try-job: dist-powerpc64le-linux-gnu try-job: dist-powerpc64le-linux-musl
2025-07-06Fix CIJakub Beránek-3/+3
2025-07-04Get rid of build-powerpc64le-toolchain.shJens Reidel-90/+7
The dist-powerpc64le-linux-musl runner never actually used the toolchain that the script produced, it instead used the one from crosstool-ng. The dist-powerpc64le-linux-gnu runner did use it, from what I can tell mainly to get a glibc 2.17 version with ppc64le support backported. Since crosstool-ng has the necessary patches, we can just use crosstool-ng to get an appropriate toolchain. While at it, use kernel 3.10 headers since that's the version documented in platform support for this target. Signed-off-by: Jens Reidel <adrian@travitia.xyz>
2025-07-03Rollup merge of #143384 - GuillaumeGomez:update-browser-ui-test, r=kobzolGuillaume Gomez-1/+1
Update browser-ui-test version to `0.21.1` One day I'll find time and motivation to use `package.json` instead. :laughing: r? `@Kobzol`
2025-07-03Update browser-ui-test version to `0.21.1`Guillaume Gomez-1/+1
2025-07-03Auto merge of #143294 - ChrisDenton:rename-mingw, r=Kobzolbors-75/+75
Rename `mingw-*` CI jobs to `pr-*` The name `mingw` confuses people because these CI jobs now do much more than just cross-compile to mingw. This is basically a find/replace. I chose the name `pr-` because it's job is to do general PR checks,
2025-07-02Rollup merge of #143274 - marcoieni:optional-jobs, r=KobzolMatthias Krüger-6/+43
ci: support optional jobs try-job: optional-mingw-check-1
2025-07-02Rollup merge of #142886 - Enselic:aarch64-panic, r=cuviperMatthias Krüger-2/+1
ci: aarch64-gnu: Stop skipping `panic_abort_doc_tests` The skipped test passes since `nightly-2024-11-29`. See https://github.com/rust-lang/rust/issues/123733#issuecomment-2928770365 and https://github.com/rust-lang/rust/issues/123733#issuecomment-2929091266 for more info. Let's stop skipping it to increase the chance of detecting a regression. r? ``````@cuviper`````` who added the skip in https://github.com/rust-lang/rust/pull/123828 Also see https://github.com/rust-lang/rust/pull/142304 for an alternative regression test that I am hoping to also land in the near future to complement the test we now stop skipping, but I need to investigate that setup more.
2025-07-02Rename mingw-check-tidy to tidyChris Denton-6/+6
2025-07-01Rename mingw-* CI jobs to pr-*Chris Denton-75/+75
2025-07-01ci: support optional jobsMarcoIeni-6/+43
2025-07-01Do not enable LLD by default in the dist profileJakub Beránek-4/+3
2025-06-28Rollup merge of #142963 - Kobzol:try-build-skip, r=jieyouxuMatthias Krüger-1/+4
Skip unnecessary components in x64 try builds We unnecessarily rebuild `wasm-component-ld`, `llvm-bitcode-linker` and Cranelift during the intermediate PGO builds several times times, which is unnecessarily and increases the duration of try builds. This PR also disables some unnecessary dist components. r? `````@jieyouxu`````