name: CI permissions: contents: read on: pull_request: paths-ignore: - README.md push: branches: main paths-ignore: - README.md jobs: build: runs-on: ubuntu-latest strategy: matrix: rust: - stable - beta - nightly-2024-09-01 steps: - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 # v2 - uses: actions-rs/toolchain@63eb9591781c46a70274cb3ebdf190fce92702e8 # v1 with: profile: minimal toolchain: ${{ matrix.rust }} components: rustfmt override: true - run: rustc --version - run: cargo build --release --workspace - run: (cd core && cargo build --features=json --release --all-targets) test: runs-on: ubuntu-latest strategy: matrix: rust: - stable - beta - nightly-2024-09-01 steps: - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 # v2 with: submodules: true - uses: actions-rs/toolchain@63eb9591781c46a70274cb3ebdf190fce92702e8 # v1 with: profile: minimal toolchain: ${{ matrix.rust }} components: rustfmt override: true - run: rustc --version - run: cargo test --all -- --nocapture check32b: runs-on: ubuntu-latest strategy: matrix: rust: - stable - beta - nightly-2024-09-01 steps: - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 # v2 with: submodules: true - uses: actions-rs/toolchain@63eb9591781c46a70274cb3ebdf190fce92702e8 # v1 with: profile: minimal toolchain: ${{ matrix.rust }} components: rustfmt target: i686-unknown-linux-gnu override: true - run: for dir in proto core prf mac aead daead streaming signature hybrid; do cargo build --target=i686-unknown-linux-gnu --manifest-path=$dir/Cargo.toml; done msrv: name: Rust ${{matrix.rust}} runs-on: ubuntu-latest strategy: fail-fast: false matrix: rust: [1.71.1, 1.72.0] steps: - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 # v2 with: submodules: true - uses: actions-rs/toolchain@63eb9591781c46a70274cb3ebdf190fce92702e8 # v1 with: profile: minimal toolchain: ${{ matrix.rust }} components: rustfmt override: true - run: rustc --version - run: cargo build --release --workspace --all-features formatting: runs-on: ubuntu-latest steps: - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 # v2 - uses: actions/setup-go@f6164bd8c8acb4a71fb2791a8b6c4024ff038dab # v3 - run: go install github.com/campoy/embedmd@v1.0.0 - uses: ruby/setup-ruby@c04af2bb7258bb6a03df1d3c1865998ac9390972 # v1.194.0 with: ruby-version: '2.7' bundler-cache: true - run: gem install mdl - uses: actions-rs/toolchain@63eb9591781c46a70274cb3ebdf190fce92702e8 # v1 with: profile: minimal toolchain: nightly-2024-09-01 override: true components: rustfmt - run: rustc --version - run: cargo fmt --all -- --check - run: PATH=$PATH:$HOME/go/bin scripts/check-format.sh regen: runs-on: ubuntu-latest steps: - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 # v2 - uses: actions-rs/toolchain@63eb9591781c46a70274cb3ebdf190fce92702e8 # v1 with: profile: minimal toolchain: stable components: rustfmt - run: sudo apt-get install -y protobuf-compiler - run: export PROTOC=/usr/bin/protoc && cargo build --workspace --all-features # Check that regeneration of code produces exactly what's checked in - run: git diff --exit-code -- . bench: runs-on: ubuntu-latest steps: - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 # v2 - uses: actions-rs/toolchain@63eb9591781c46a70274cb3ebdf190fce92702e8 # v1 with: profile: minimal toolchain: nightly-2024-09-01 override: true components: rustfmt - run: cargo bench --all-targets clippy: runs-on: ubuntu-latest steps: - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 # v2 - uses: actions-rs/toolchain@63eb9591781c46a70274cb3ebdf190fce92702e8 # v1 with: profile: minimal toolchain: nightly-2024-09-01 override: true components: rustfmt, clippy - run: rustc --version - run: cargo clippy --all-features --all-targets -- -Dwarnings doc: runs-on: ubuntu-latest steps: - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 # v2 - uses: actions-rs/toolchain@63eb9591781c46a70274cb3ebdf190fce92702e8 # v1 with: profile: minimal toolchain: stable - run: rustc --version - run: cargo doc --no-deps --document-private-items --all-features udeps: runs-on: ubuntu-latest steps: - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 # v2 - uses: actions-rs/toolchain@63eb9591781c46a70274cb3ebdf190fce92702e8 # v1 with: profile: minimal toolchain: nightly-2024-09-01 override: true components: rustfmt - uses: actions-rs/install@69ec87709ffb5b19a7b5ddbf610cb221498bb1eb # v0.1.2 with: crate: cargo-udeps use-tool-cache: true locked: true version: 0.1.50 - run: cargo udeps deny: runs-on: ubuntu-latest steps: - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 # v2 - uses: actions-rs/toolchain@63eb9591781c46a70274cb3ebdf190fce92702e8 # v1 with: profile: minimal toolchain: stable override: true components: rustfmt - run: cargo install --locked --version 0.16.1 cargo-deny - run: cargo deny --version - run: cargo deny check coverage: runs-on: ubuntu-latest steps: - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 # v2 with: submodules: true fetch-depth: 0 - uses: actions-rs/toolchain@63eb9591781c46a70274cb3ebdf190fce92702e8 # v1 with: profile: minimal toolchain: 1.74.0 override: true components: rustfmt - uses: actions-rs/install@69ec87709ffb5b19a7b5ddbf610cb221498bb1eb # v0.1.2 with: crate: cargo-tarpaulin use-tool-cache: true version: 0.27.3 - run: cargo tarpaulin --verbose --ignore-tests --all-features --timeout=600 --out xml - name: Upload to codecov.io run: | bash <(curl -s https://codecov.io/bash)