name: CI
permissions:
contents: read
on:
push:
branches: ["main"]
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
rust: [stable, beta, 1.85.0]
feature: ["aws-lc-rs", "rust-crypto", "rcgen", ""]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@v1
id: toolchain
with:
toolchain: ${{ matrix.rust }}
- uses: Swatinem/rust-cache@v2
- name: Install autotools (macOS)
if: runner.os == 'macOS'
run: brew install autoconf automake libtool
- name: Set MACOSX_DEPLOYMENT_TARGET
if: runner.os == 'macOS'
run: echo "MACOSX_DEPLOYMENT_TARGET=$(sw_vers -productVersion | cut -d. -f1)" >> $GITHUB_ENV
- name: Build
run: cargo +${{steps.toolchain.outputs.name}} build --no-default-features --features "${{ matrix.feature }}"
- name: Test
if: matrix.feature == 'aws-lc-rs' || matrix.feature == 'rust-crypto'
run: cargo +${{steps.toolchain.outputs.name}} test --no-default-features --features "${{ matrix.feature }}"
snowflake:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Martin's snowflake formatting rules
uses: algesten/snowflake@v1.0.4
with:
check_diff: true
line_width_rules: "CHANGELOG.md:120;c_cpp_properties.json:160;Cargo.toml:199;README.md:180;README.tpl:180;*.md:110;*.rs:110;*.toml:110;DEFAULT=110"
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@v1
id: toolchain
with:
toolchain: stable
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v2
- name: fmt
run: cargo +${{steps.toolchain.outputs.name}} fmt --all -- --check
- name: clippy
run: cargo +${{steps.toolchain.outputs.name}} clippy -- -D warnings
- uses: dtolnay/rust-toolchain@v1
with:
toolchain: stable
components: clippy
- name: doc
run: cargo doc --no-deps
env:
RUSTDOCFLAGS: -Dwarnings
cargo-deny:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: EmbarkStudios/cargo-deny-action@v2
with:
command: check
arguments: --all-features