Cache the Rust toolchain in CI (#15660)

We're spending a full 1.5m installing the Rust toolchain on Windows,
e.g.,
https://github.com/astral-sh/ruff/actions/runs/12893749773/job/35950838258

In contrast, in uv this is instant (e.g.
https://github.com/astral-sh/uv/actions/runs/12897572530/job/35962989190)
because we are caching the toolchain.

This shifts the rust-cache action earlier in all the CI jobs.
This commit is contained in:
Zanie Blue 2025-01-22 01:10:03 -06:00 committed by GitHub
parent d4efef2382
commit 7841cddb34
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 15 additions and 16 deletions

View File

@ -116,11 +116,11 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
persist-credentials: false persist-credentials: false
- uses: Swatinem/rust-cache@v2
- name: "Install Rust toolchain" - name: "Install Rust toolchain"
run: | run: |
rustup component add clippy rustup component add clippy
rustup target add wasm32-unknown-unknown rustup target add wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
- name: "Clippy" - name: "Clippy"
run: cargo clippy --workspace --all-targets --all-features --locked -- -D warnings run: cargo clippy --workspace --all-targets --all-features --locked -- -D warnings
- name: "Clippy (wasm)" - name: "Clippy (wasm)"
@ -136,6 +136,7 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
persist-credentials: false persist-credentials: false
- uses: Swatinem/rust-cache@v2
- name: "Install Rust toolchain" - name: "Install Rust toolchain"
run: rustup show run: rustup show
- name: "Install mold" - name: "Install mold"
@ -148,7 +149,6 @@ jobs:
uses: taiki-e/install-action@v2 uses: taiki-e/install-action@v2
with: with:
tool: cargo-insta tool: cargo-insta
- uses: Swatinem/rust-cache@v2
- name: "Run tests" - name: "Run tests"
shell: bash shell: bash
env: env:
@ -182,6 +182,7 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
persist-credentials: false persist-credentials: false
- uses: Swatinem/rust-cache@v2
- name: "Install Rust toolchain" - name: "Install Rust toolchain"
run: rustup show run: rustup show
- name: "Install mold" - name: "Install mold"
@ -194,7 +195,6 @@ jobs:
uses: taiki-e/install-action@v2 uses: taiki-e/install-action@v2
with: with:
tool: cargo-insta tool: cargo-insta
- uses: Swatinem/rust-cache@v2
- name: "Run tests" - name: "Run tests"
shell: bash shell: bash
env: env:
@ -211,13 +211,13 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
persist-credentials: false persist-credentials: false
- uses: Swatinem/rust-cache@v2
- name: "Install Rust toolchain" - name: "Install Rust toolchain"
run: rustup show run: rustup show
- name: "Install cargo nextest" - name: "Install cargo nextest"
uses: taiki-e/install-action@v2 uses: taiki-e/install-action@v2
with: with:
tool: cargo-nextest tool: cargo-nextest
- uses: Swatinem/rust-cache@v2
- name: "Run tests" - name: "Run tests"
shell: bash shell: bash
env: env:
@ -238,6 +238,7 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
persist-credentials: false persist-credentials: false
- uses: Swatinem/rust-cache@v2
- name: "Install Rust toolchain" - name: "Install Rust toolchain"
run: rustup target add wasm32-unknown-unknown run: rustup target add wasm32-unknown-unknown
- uses: actions/setup-node@v4 - uses: actions/setup-node@v4
@ -248,7 +249,6 @@ jobs:
- uses: jetli/wasm-pack-action@v0.4.0 - uses: jetli/wasm-pack-action@v0.4.0
with: with:
version: v0.13.1 version: v0.13.1
- uses: Swatinem/rust-cache@v2
- name: "Test ruff_wasm" - name: "Test ruff_wasm"
run: | run: |
cd crates/ruff_wasm cd crates/ruff_wasm
@ -267,11 +267,11 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
persist-credentials: false persist-credentials: false
- uses: Swatinem/rust-cache@v2
- name: "Install Rust toolchain" - name: "Install Rust toolchain"
run: rustup show run: rustup show
- name: "Install mold" - name: "Install mold"
uses: rui314/setup-mold@v1 uses: rui314/setup-mold@v1
- uses: Swatinem/rust-cache@v2
- name: "Build" - name: "Build"
run: cargo build --release --locked run: cargo build --release --locked
@ -290,6 +290,7 @@ jobs:
with: with:
file: "Cargo.toml" file: "Cargo.toml"
field: "workspace.package.rust-version" field: "workspace.package.rust-version"
- uses: Swatinem/rust-cache@v2
- name: "Install Rust toolchain" - name: "Install Rust toolchain"
env: env:
MSRV: ${{ steps.msrv.outputs.value }} MSRV: ${{ steps.msrv.outputs.value }}
@ -304,7 +305,6 @@ jobs:
uses: taiki-e/install-action@v2 uses: taiki-e/install-action@v2
with: with:
tool: cargo-insta tool: cargo-insta
- uses: Swatinem/rust-cache@v2
- name: "Run tests" - name: "Run tests"
shell: bash shell: bash
env: env:
@ -322,11 +322,11 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
persist-credentials: false persist-credentials: false
- name: "Install Rust toolchain"
run: rustup show
- uses: Swatinem/rust-cache@v2 - uses: Swatinem/rust-cache@v2
with: with:
workspaces: "fuzz -> target" workspaces: "fuzz -> target"
- name: "Install Rust toolchain"
run: rustup show
- name: "Install cargo-binstall" - name: "Install cargo-binstall"
uses: cargo-bins/cargo-binstall@main uses: cargo-bins/cargo-binstall@main
with: with:
@ -384,9 +384,9 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
persist-credentials: false persist-credentials: false
- uses: Swatinem/rust-cache@v2
- name: "Install Rust toolchain" - name: "Install Rust toolchain"
run: rustup component add rustfmt run: rustup component add rustfmt
- uses: Swatinem/rust-cache@v2
# Run all code generation scripts, and verify that the current output is # Run all code generation scripts, and verify that the current output is
# already checked into git. # already checked into git.
- run: python crates/ruff_python_ast/generate.py - run: python crates/ruff_python_ast/generate.py
@ -578,9 +578,9 @@ jobs:
- uses: actions/setup-python@v5 - uses: actions/setup-python@v5
with: with:
python-version: ${{ env.PYTHON_VERSION }} python-version: ${{ env.PYTHON_VERSION }}
- uses: Swatinem/rust-cache@v2
- name: "Install Rust toolchain" - name: "Install Rust toolchain"
run: rustup show run: rustup show
- uses: Swatinem/rust-cache@v2
- name: "Install pre-commit" - name: "Install pre-commit"
run: pip install pre-commit run: pip install pre-commit
- name: "Cache pre-commit" - name: "Cache pre-commit"
@ -612,6 +612,7 @@ jobs:
- uses: actions/setup-python@v5 - uses: actions/setup-python@v5
with: with:
python-version: "3.13" python-version: "3.13"
- uses: Swatinem/rust-cache@v2
- name: "Add SSH key" - name: "Add SSH key"
if: ${{ env.MKDOCS_INSIDERS_SSH_KEY_EXISTS == 'true' }} if: ${{ env.MKDOCS_INSIDERS_SSH_KEY_EXISTS == 'true' }}
uses: webfactory/ssh-agent@v0.9.0 uses: webfactory/ssh-agent@v0.9.0
@ -621,7 +622,6 @@ jobs:
run: rustup show run: rustup show
- name: Install uv - name: Install uv
uses: astral-sh/setup-uv@v5 uses: astral-sh/setup-uv@v5
- uses: Swatinem/rust-cache@v2
- name: "Install Insiders dependencies" - name: "Install Insiders dependencies"
if: ${{ env.MKDOCS_INSIDERS_SSH_KEY_EXISTS == 'true' }} if: ${{ env.MKDOCS_INSIDERS_SSH_KEY_EXISTS == 'true' }}
run: uv pip install -r docs/requirements-insiders.txt --system run: uv pip install -r docs/requirements-insiders.txt --system
@ -651,10 +651,9 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
with: with:
persist-credentials: false persist-credentials: false
- uses: Swatinem/rust-cache@v2
- name: "Install Rust toolchain" - name: "Install Rust toolchain"
run: rustup show run: rustup show
- name: "Cache rust"
uses: Swatinem/rust-cache@v2
- name: "Run checks" - name: "Run checks"
run: scripts/formatter_ecosystem_checks.sh run: scripts/formatter_ecosystem_checks.sh
- name: "Github step summary" - name: "Github step summary"
@ -719,6 +718,8 @@ jobs:
with: with:
persist-credentials: false persist-credentials: false
- uses: Swatinem/rust-cache@v2
- name: "Install Rust toolchain" - name: "Install Rust toolchain"
run: rustup show run: rustup show
@ -727,8 +728,6 @@ jobs:
with: with:
tool: cargo-codspeed tool: cargo-codspeed
- uses: Swatinem/rust-cache@v2
- name: "Build benchmarks" - name: "Build benchmarks"
run: cargo codspeed build --features codspeed -p ruff_benchmark run: cargo codspeed build --features codspeed -p ruff_benchmark