cargo-hold 1.3.6

cargo-hold: A CI tool to ensure Cargo's incremental compilation is reliable by managing your caches intelligently
Documentation
name: Run checks and tests

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

env:
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  CARGO_INCREMENTAL: 0
  CARGO_TERM_COLOR: always
  NIX_SIGNING_PUBLIC_KEY: "ellipsis-labs:eug33YU0s2/K/BgiOtEta1cwNIzERtIybNATLOBsrEA="
  NIX_CACHE_URI: "s3://atlas-nix-cache?compression=zstd&parallel-compression=true&endpoint=6a2b885167c20bd5dd1d3bcb4b09760f.r2.cloudflarestorage.com"

jobs:
  check:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
    steps:
      - uses: actions/checkout@v7
      - uses: ./.github/actions/rust-cache
        with:
          cache-name: check
      - uses: ./.github/actions/cargo-binstall
        with:
          binaries: cargo-hold
      - run: cargo hold voyage
      - run: cargo check --locked --all-targets

  test:
    runs-on: ${{ matrix.os }}
    needs: [check]
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
    steps:
      - uses: actions/checkout@v7
      - uses: ./.github/actions/rust-cache
        with:
          cache-name: test
      - uses: ./.github/actions/cargo-binstall
        with:
          binaries: cargo-nextest cargo-hold
      - run: cargo hold voyage
      - run: cargo nextest run --locked --profile ci

  doctest:
    runs-on: ${{ matrix.os }}
    needs: [check]
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
    steps:
      - uses: actions/checkout@v7
      - uses: ./.github/actions/rust-cache
        with:
          cache-name: doctest
      - uses: ./.github/actions/cargo-binstall
        with:
          binaries: cargo-hold
      - run: cargo hold voyage
      - run: cargo test --locked --doc

  clippy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: ./.github/actions/rust-cache
        with:
          cache-name: clippy
      - uses: ./.github/actions/cargo-binstall
        with:
          binaries: cargo-hold
      - run: cargo hold voyage
      - run: cargo clippy --all-targets -- -D warnings

  fmt:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - run: rustup toolchain install nightly-2025-07-08 --component rustfmt
      - run: cargo +nightly-2025-07-08 fmt --check

  deny:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: ./.github/actions/cargo-binstall
        with:
          binaries: cargo-deny
      - run: cargo deny check

  audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: ./.github/actions/cargo-binstall
        with:
          binaries: cargo-audit
      - run: cargo audit

  cross-build:
    needs: [test, doctest, clippy, fmt, deny, audit]
    uses: ./.github/workflows/cross-build.yaml
    secrets:
      R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
      R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
      NIX_SIGNING_KEY: ${{ secrets.NIX_SIGNING_KEY }}

  all-checks-passed:
    needs: [check, test, doctest, clippy, fmt, deny, audit, cross-build]
    runs-on: ubuntu-latest
    steps:
      - run: echo "All checks passed"