Naar inhoud springen

Rust

GitHub Actions CI aan Rust

Cargo herbouwt de volledige afhankelijkheidsgrafiek bij vrijwel elke CI-run.

12m → 4m
Koude bouw
12m → 45s
Warme bouw
94%
Cachehitpercentage

Cargo herbouwt de volledige afhankelijkheidsgrafiek bij vrijwel elke CI-run.

Waarom het gebeurt

target/ wordt niet in de cache opgeslagen, of de cachesleutel verandert wanneer een bronbestand verandert, zodat de incrementele status bij elke uitvoering wordt weggegooid.

Wat te veranderen

  1. Cache ~/.cargo/registry, ~/.cargo/git en target/ ingetoetst op Cargo.lock in plaats van op bronbestanden
  2. Gebruik sccache zodat zelfs een koud doelwit/gecompileerde artefacten in verschillende takken hergebruikt
  3. Splits de vrachtcontrole, vrachtclippy en vrachttest in parallelle taken die één cache delen
  4. Bouw release-artefacten op een runner met 16 vCPU - rustc schaalt vrijwel lineair met codegen-eenheden

Rust op runnerhut

yaml
jobs:
test:
runs-on: runnerhut-16vcpu-ubuntu-2404
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: cargo-${{ hashFiles('**/Cargo.lock') }}
- run: cargo test --all-features
Een werkend uitgangspunt

De enige runnerhut-specifieke regel is `runs-on: runnerhut-16vcpu-ubuntu-2404`. Al het andere is standaard GitHub Actions — dezelfde acties, dezelfde geheimen en hetzelfde machtigingsmodel dat u vandaag de dag gebruikt.

Je volgende build kan twee keer zo snel zijn, voor de halve prijs

Begin gratis. Weggaan is dezelfde ene regel, en die diff publiceren we ook.