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
- Cache ~/.cargo/registry, ~/.cargo/git en target/ ingetoetst op Cargo.lock in plaats van op bronbestanden
- Gebruik sccache zodat zelfs een koud doelwit/gecompileerde artefacten in verschillende takken hergebruikt
- Splits de vrachtcontrole, vrachtclippy en vrachttest in parallelle taken die één cache delen
- 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-featuresDe 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.