name: build on: push: branches: - main pull_request: permissions: read-all jobs: build: strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] rust_version: [stable] cargo_flags: [""] include: - os: ubuntu-latest rust_version: "1.64" cargo_flags: "" - os: ubuntu-latest rust_version: stable cargo_flags: "--all-features" runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 - name: Install Rust (${{ matrix.rust_version }}) uses: dtolnay/rust-toolchain@52e69531e6f69a396bc9d1226284493a5db969ff with: toolchain: ${{ matrix.rust_version }} - name: Build run: cargo build --workspace --all-targets --verbose ${{ matrix.cargo_flags }} - name: Test run: cargo test --workspace --all-targets --verbose ${{ matrix.cargo_flags }} env: RUST_BACKTRACE: 1 check-protos: name: Check protos runs-on: ubuntu-latest steps: - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 - uses: dtolnay/rust-toolchain@52e69531e6f69a396bc9d1226284493a5db969ff with: toolchain: stable - run: sudo apt update && sudo apt-get -y install protobuf-compiler - name: Generate Rust code from .proto files run: cargo run -p gen-protos - name: Check for uncommitted changes run: git diff --exit-code rustfmt: name: Check formatting runs-on: ubuntu-latest steps: - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 - uses: dtolnay/rust-toolchain@52e69531e6f69a396bc9d1226284493a5db969ff with: toolchain: nightly components: rustfmt - run: cargo fmt --all -- --check cargo-deny: runs-on: ubuntu-latest strategy: matrix: checks: - advisories - bans licenses sources # Prevent sudden announcement of a new advisory from failing ci: continue-on-error: ${{ matrix.checks == 'advisories' }} steps: - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 - uses: EmbarkStudios/cargo-deny-action@8af37f5d0c77859223226de776036f7f691e1469 with: command: check ${{ matrix.checks }} clippy-check: name: Clippy check permissions: checks: write runs-on: ubuntu-latest steps: - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 - uses: dtolnay/rust-toolchain@52e69531e6f69a396bc9d1226284493a5db969ff with: toolchain: stable components: clippy - run: cargo clippy --all-features --workspace --all-targets -- -D warnings