Антон Долганин

Я инженер, который решает задачи, а не пишет на языке. Архитектура, разработка, DevOps — подбираю инструменты под цель, строю решения, которые работают в проде и масштабируются без боли.

Пример workflow для Rust на GitHub Actions:

runs-on: ubuntu-latest

steps:
  - uses: actions/checkout@v4

  - name: Install cargo-audit, cargo-deny, tarpaulin, chef
    run: cargo install cargo-audit cargo-deny cargo-tarpaulin cargo-chef

  - name: Security check
    run: cargo audit

  - name: Dependency policy check
    run: cargo deny check

  - name: Test coverage gate
    run: cargo tarpaulin --fail-under 80

  - name: Build using cargo chef
    run: |
      cargo chef prepare --recipe-path recipe.json
      cargo chef cook --recipe-path recipe.json
      cargo build --release

Этот пайплайн:

  • проверяет безопасность,
  • контролирует зависимости и лицензии,
  • следит за покрытием тестами,
  • и собирает релизную версию максимально быстро за счёт кеша зависимостей.

Что делает каждый шаг:

Security check (cargo-audit)

cargo audit

Проверяет Cargo.lock на уязвимые и устаревшие зависимости по базе RustSec.

Dependency policy check (cargo-deny)

cargo deny check

Валидирует зависимости: лицензии, запрещенные пакеты, дубли и т.п. — гарантия, что стек зависит только от “разрешённых” крейтов.

Test coverage gate (cargo-tarpaulin)

cargo tarpaulin --fail-under 80

Считает покрытие тестами и валит pipeline, если оно ниже 80%. Простой quality-gate.

Fast build using cargo-chef


cargo chef prepare --recipe-path recipe.json
cargo chef cook --recipe-path recipe.json
cargo build --release
  • prepare — генерит рецепт зависимостей (recipe.json).
  • cook — собирает и кеширует зависимости отдельно.
  • cargo build --release — финальная сборка проекта, уже поверх прогретого кеша.

via @Let's Get Rusty

Rust CI: безопасность, зависимости, покрытие и быстрые сборки