name: CI on: push: branches: [main, master, v2] pull_request: branches: [main, master, v2] env: CARGO_TERM_COLOR: always jobs: test: name: Test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-action@stable with: components: clippy, rustfmt - name: Install capnp run: sudo apt-get update && sudo apt-get install -y capnproto - name: Cache cargo uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo- - name: Check format run: cargo fmt --all -- --check - name: Build run: cargo build --workspace - name: Test run: cargo test --workspace - name: Clippy run: cargo clippy --workspace --all-targets -- -D warnings deny: name: cargo-deny runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install cargo-deny run: cargo install cargo-deny --locked - name: Check deny run: cargo deny check audit: name: cargo-audit runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-action@stable - name: Run audit run: | cargo install cargo-audit --locked cargo audit coverage: name: Coverage runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-action@stable - name: Install capnp run: sudo apt-get update && sudo apt-get install -y capnproto - name: Cache cargo uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ runner.os }}-coverage-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-coverage- - name: Install cargo-tarpaulin run: cargo install cargo-tarpaulin - name: Run coverage run: | cargo tarpaulin --workspace \ --exclude quicprochat-p2p \ --out xml \ --output-dir coverage/ \ -- --test-threads 1 - name: Upload coverage report uses: actions/upload-artifact@v4 with: name: coverage-report path: coverage/cobertura.xml docker: name: Docker Build runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build Docker image run: docker build -f docker/Dockerfile .