Configuração de CI para Rust
A configuração de CI do lado do Git mantém os portões de qualidade do Rust próximos ao controle de versão: .github/workflows/ci.yml espelha o que os revisores esperam antes do merge.
Busque em todas as páginas da documentação
A configuração de CI do lado do Git mantém os portões de qualidade do Rust próximos ao controle de versão: .github/workflows/ci.yml espelha o que os revisores esperam antes do merge.
name: ci
on:
pull_request:
push:
branches: [main]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.97.0
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v2
- run: cargo fmt --all -- --check
- run: cargo clippy --all-targets --all-features -- -D warnings
- run: cargo test --all-features
- run: cargo build --release --locked
env:
SQLX_OFFLINE: trueQuando usar isso:
jobs:
msrv:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@1.97.0
- run: cargo test --locked
miri:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: miri
- run: cargo +nightly miri test -p unsafe-crateO que isso demonstra:
unsafeSQLX_OFFLINE evita banco de dados ao vivo na CI de PR# Hook .pre-commit-config.yaml
- repo: local
hooks:
- id: cargo-fmt
entry: cargo fmt --all -- --check
language: system
pass_filenames: falseOs hooks devem corresponder exatamente aos comandos da CI.
--locked - CI não determinística. Correção: falhar quando o lockfile estiver desatualizado.target sem chave de lock - artefatos desatualizados. Correção: rust-cache lida com chaves.#[ignore] para divisão da CI.-D warnings - avisos se acumulam.main - PRs não devem exigir nightly, a menos que documentado.| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
cargo nextest | Relatórios de teste mais rápidos | Contagem mínima de testes |
| Runners auto-hospedados | Grande espaço de trabalho | OSS simples |
| Inclui GitLab | Padrão da organização | Repositório GitHub |
Arquivo release.yml separado em tags; mantenha o ci.yml de PR rápido.
Faça commit de .sqlx/; defina SQLX_OFFLINE=true no ambiente do workflow.
Execute a partir da raiz do repositório; cargo test --workspace --all-features.
Versões de Stack: Esta página foi escrita para Rust 1.97.0 (edição 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4 e Polars 0.46+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026