about summary refs log tree commit diff
path: root/src/ci/github-actions/ci.yml
AgeCommit message (Collapse)AuthorLines
2023-04-16ci: add a runner for vanilla LLVM 16Josh Stone-0/+5
Like #107044, this will let us track compatibility with LLVM 16 going forward, especially after we eventually upgrade our own to the next. This also drops `tidy` here and in `x86_64-gnu-llvm-15`, syncing with that change in #106085.
2023-04-10Trim down core counts for fast buildersMark Rousskov-36/+36
These builders aren't particularly high on overall average CPU usage and finish in typically around 30 minutes. Cutting their core counts will hopefully not significantly increase wall-time while cutting costs, allowing us to shift some of the wins into our slower builders.
2023-04-10Switch all job names to include core countMark Rousskov-64/+72
This will allow moving jobs between 8 and 16 core VMs in the next commit more easily.
2023-04-02Improve job names in Github Actions previewjyn-3/+3
Before: `CI / PR (mingw-check, false, ubuntu-20.04-16core-64gb) (pull_request)` After: `CI / PR - mingw-check (pull_request)`
2023-03-19Move us to the new large runners poolMark Rousskov-2/+2
For now this keeps all the configuration identical (AFAICT) but we'll likely want to play with the specifics to move some of the slower builders to larger machines and the faster builders to smaller machines, likely reducing overall usage and improving CI times.
2023-03-13Revert "enable ThinLTO for rustc on x86_64-pc-windows-msvc dist builds"Nilstrieb-1/+0
This lead to a miscompilation in at least `char::is_whitespace` and probably in more unknown places..... This reverts commit 684663ed380d0e6a6e135aed9c6055ab4ba94ac8.
2023-02-22Re-apply "switch to the macos-12-xl builder"Michael Goulet-1/+1
This reverts commit e63ec2e1402eaff949e5c53b8f6062b152010fcc.
2023-02-10Update the minimum external LLVM to 14Josh Stone-7/+2
2023-02-05Run the tools builder on all PRsJoshua Nelson-2/+0
Previously, it would only run on changes to subtrees, submodules, or select directories. That made it so that changes to the compiler that broke tools would only be detected on a full bors merge. This makes it so the tools builder runs by default, making it easier to catch breaking changes to clippy (which was the most effected).
2023-02-03Auto merge of #107543 - ehuss:protocol-sparse, r=jyn514bors-0/+1
Enable Cargo's sparse protocol in CI This enables the sparse protocol in CI in order to exercise and dogfood it. This is intended test the production server in a real-world situation. Closes #107342
2023-02-01Revert "switch to the macos-12-xl builder"Michael Goulet-1/+1
This reverts commit fcbae989ae790d5b9a0a23ceba242d0b0d4e6c5b.
2023-01-31Enable Cargo's sparse protocol in CIEric Huss-0/+1
2023-01-29Auto merge of #103019 - Kobzol:ci-multistage-python, r=Mark-Simulacrumbors-1/+1
Port pgo.sh to Python This PR ports the `pgo.sh` multi stage build file from bash to Python, to make it easier to add new functionality and gather statistics. Main changes: 1) `pgo.sh` rewritten from Bash to Python. Jump from ~200 Bash LOC to ~650 Python LOC. Bash is, unsurprisingly, more concise for running scripts and binaries. 2) Better logging. Each separate stage is now clearly separated in logs, and the logs can be quickly grepped to find out which stage has completed or failed, and how long it took. 3) Better statistics. At the end of the run, there is now a table that shows the duration of the individual stages, along with a percentual ratio of the total workflow run: ``` 2023-01-15T18:13:49.9896916Z stage-build INFO: Timer results 2023-01-15T18:13:49.9902185Z --------------------------------------------------------- 2023-01-15T18:13:49.9902605Z Build rustc (LLVM PGO): 1815.67s (21.47%) 2023-01-15T18:13:49.9902949Z Gather profiles (LLVM PGO): 418.73s ( 4.95%) 2023-01-15T18:13:49.9903269Z Build rustc (rustc PGO): 584.46s ( 6.91%) 2023-01-15T18:13:49.9903835Z Gather profiles (rustc PGO): 806.32s ( 9.53%) 2023-01-15T18:13:49.9904154Z Build rustc (LLVM BOLT): 1662.92s (19.66%) 2023-01-15T18:13:49.9904464Z Gather profiles (LLVM BOLT): 715.18s ( 8.46%) 2023-01-15T18:13:49.9914463Z Final build: 2454.00s (29.02%) 2023-01-15T18:13:49.9914798Z Total duration: 8457.27s 2023-01-15T18:13:49.9915305Z --------------------------------------------------------- ``` A sample run can be seen [here](https://github.com/rust-lang/rust/actions/runs/3923980164/jobs/6707932029). I tried to keep the code compatible with Python 3.6 and don't use dependencies, which required me to reimplement some small pieces of functionality (like formatting bytes). I suppose that it shouldn't be so hard to upgrade to a newer Python or install dependencies in the CI container, but I'd like to avoid it if it won't be needed. The code is in a single file `stage-build.py`, so it's a bit cluttered. I can also separate it into multiple files, although having it in a single file has some benefits. The code could definitely be nicer, but I'm a bit wary of introducing a lot of abstraction and similar stuff, as long as the code is stuffed into a single file. Currently, the Python pipeline should faithfully mirror the bash pipeline one by one. After this PR, I'd like to try to optimize it, e.g. by caching the LLVM builds on S3. r? `@Mark-Simulacrum`
2023-01-29Upgrade mingw-w64 on CIMateusz Mikuła-10/+2
2023-01-24Port pgo.sh to PythonJakub Beránek-1/+1
2023-01-18ci: add runners for vanilla LLVM 14 and 15Josh Stone-0/+10
2023-01-11Change `src/test` to `tests` in source files, fix tidy and testsAlbert Larsan-2/+2
2022-12-31Revert "Auto merge of #105058 - ↵Joshua Nelson-6/+0
Nilstrieb:no-merge-commits-for-you-only-bors-is-allowed-to-do-that, r=jyn514" This reverts commit 4839886f0abe208ab8f2bb73a3076a59fe2ab60c, reversing changes made to ce85c98575e3016cf2007d90a85be321e592aa96.
2022-12-30Checkout `master` branch in CINilstrieb-0/+6
2022-12-22Run `tidy` in its own job in PR CIDeadbeef-1/+9
This duplicates mingw-check into two jobs where one job runs `tidy` only while the other job does not. The tidy job will not cancel other jobs on failure.
2022-12-17Re-enable ThinLTO for rustc on x86_64-apple-darwin dist buildsRémy Rakic-1/+1
This reverts commit ddb6fe2e1d270d23ec09c2cb435c22229830e97c.
2022-12-13Revert "enable ThinLTO for rustc on x86_64-apple-darwin dist builds"Rémy Rakic-1/+1
This reverts commit 3a085f769545e5f3327d29460060520d59766ba7.
2022-12-11Auto merge of #103647 - lqd:osx-x64-lto, r=Mark-Simulacrumbors-1/+1
Enable ThinLTO for rustc on `x86_64-apple-darwin` Local measurements seemed to show an improvement on a couple benchmarks, so I'd like to test real CI builds, and see if the builder doesn't timeout with the expected slight increase in build times. Let's start with x64 rustc ThinLTO, and then figure out the file structure to configure LLVM ThinLTO. Maybe we'll then try `aarch64` builds since that also looked good locally.
2022-12-11Auto merge of #103591 - lqd:win-lto, r=Mark-Simulacrumbors-0/+1
Enable ThinLTO for rustc on x64 msvc This applies the great work from `@bjorn3` and `@Kobzol` in https://github.com/rust-lang/rust/pull/101403 to x64 msvc. Here are the local results for the try build `68c5c85ed759334a11f0b0e586f5032a23f85ce4`, compared to its parent `0a6b941df354c59b546ec4c0d27f2b9b0cb1162c`. Looking better than my previous local builds. ![image](https://user-images.githubusercontent.com/247183/198158039-98ebac0e-da0e-462e-8162-95e88345edb9.png) (I can't show cycle counts, as that option is failing on the windows version of the perf collector, but I'll try to analyze and debug this soon) This will be the first of a few tests for rustc / llvm / both ThinLTO on the windows and mac targets.
2022-12-03switch to the macos-12-xl builderPietro Albini-1/+1
2022-11-20Use XCode 13.4 everywhere in dist CIBlackHoleFox-1/+4
Do this because XCode 14 no longer supports a macOS deployment target of anything before 10.13. We need 10.7+(-ish, really 10.9+) for now.
2022-11-19Bring back XCode selection CI scriptBlackHoleFox-0/+5
This reverts commit 8514b0097b28f84ee5cfead059a5771c6a693fb0.
2022-10-27enable ThinLTO for rustc on x86_64-apple-darwin dist buildsRémy Rakic-1/+1
2022-10-26enable ThinLTO for rustc on x86_64-pc-windows-msvc dist buildsRémy Rakic-0/+1
2022-09-24Auto merge of #98483 - dvtkrlbs:bootstrap-dist, r=jyn514bors-10/+10
Distribute bootstrap in CI This pre-compiles bootstrap from source and adds it to the existing `rust-dev` component. There are two main goals here: 1. Make it faster to build rust from source, both the first time and incrementally 2. Make it easier to add non-python entrypoints, since they can call out to bootstrap directly rather than having to figure out the right flags to pre-compile it. This second part is still in a bit of flux, see the tracking issue below for more information. There are also several changes to make bootstrap able to run on a machine other than the one it was built (particularly around `config.src` and `config.out` detection). I (`@jyn514)` am slightly concerned these will regress unless tested - maybe we should add an automated test that runs bootstrap in a chroot or something? Unclear whether the effort is worth the test coverage. Helps with https://github.com/rust-lang/rust/issues/94829.
2022-09-18Auto merge of #101332 - sashashura:patch-1, r=pietroalbinibors-0/+9
GitHub Workflows security hardening This PR adds explicit [permissions section](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions) to workflows. This is a security best practice because by default workflows run with [extended set of permissions](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token) (except from `on: pull_request` [from external forks](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/)). By specifying any permission explicitly all others are set to none. By using the principle of least privilege the damage a compromised workflow can do (because of an [injection](https://securitylab.github.com/research/github-actions-untrusted-input/) or compromised third party tool or action) is restricted. It is recommended to have [most strict permissions on the top level](https://github.com/ossf/scorecard/blob/main/docs/checks.md#token-permissions) and grant write permissions on [job level](https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs) case by case.
2022-09-16Remove the allow-list for dynamic linking of LLVM toolsChris Wailes-1/+1
This commit removes an allow-list for the dynamic linking of the LLVM tools and instead relies on the builder's linking preference only.
2022-09-14Distribute bootstrap in CI artifactsTuna-10/+10
- Add a new `bootstrap` component Originally, we planned to combine this with the `rust-dev` component. However, I realized that would force LLVM to be redownloaded whenever bootstrap is modified. LLVM is a much larger download, so split this to get better caching. - Build bootstrap for all tier 1 and 2 targets
2022-09-04Regeneratesashashura-2/+2
2022-09-04add actions: writesashashura-0/+6
2022-09-02Update ci.ymlAlex-0/+3
Signed-off-by: sashashura <93376818+sashashura@users.noreply.github.com>
2022-08-27Sunset RLSEric Huss-2/+1
2022-08-20Enable downloading prebuilt LLVM in test buildersMark Rousskov-0/+18
See comment added for details on the test builder restriction. This is primarily intended for macOS CI, but is likely to be a slight win on other builders too.
2022-08-14Update the minimum external LLVM to 13Josh Stone-3/+3
2022-08-10Allow old toolchain on images with CUSTOM_MINGWJosh Stone-6/+24
2022-08-01Don't cancel try-perf branch if 'outdated'Ryan Levick-1/+1
2022-07-30dont run stage1 tests in prMilo-4/+1
2022-07-30add to full test-suiteMilo-0/+5
2022-07-20test stage-1 in ciMilo-0/+3
2022-07-11introduce PGO on the `dist-x86_64-msvc` builderRémy Rakic-1/+1
This adds windows-specific behavior into the PGO script, and enables it on CI.
2022-06-05remove azure pipelines configurationPietro Albini-4/+0
2022-04-14update: actions/checkout@v2 to actions/checkout@v3Keita Nonaka-2/+2
update: actions/checkout@v2 to actions/checkout@v3 for all yaml files Revert "update: actions/checkout@v2 to actions/checkout@v3 for all yaml files" This reverts commit 7445e582b900f0f56f5f2bd9036aacab97ef28e9. change GitHub Actions version v2 to v3 change GitHub Actions
2022-03-01Move submodule checkout before msys2 installation.Eric Huss-4/+4
For some reason, `tar` behaves differently in such a way that it does not create symlinks on Windows correctly, resulting in `Cannot create symlink to 'ld.gold': No such file or directory` errors.
2022-02-10Split x86_64 apple builder into twoMark Rousskov-3/+9
2022-01-28Move target-only apple targets to separate builderMark Rousskov-4/+13