1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
name: build
on:
pull_request:
branches:
- main
push:
branches:
- main
schedule:
- cron: "12 3 * * 0"
jobs:
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: rustup component add rustfmt
- run: cargo fmt -- --check
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: rustup default 1.82.0 && rustup component add clippy
- uses: Swatinem/rust-cache@v2
- run: cargo clippy --all-targets -- -D warnings -D clippy::all
- run: cargo clippy --all-targets --features native-tls -- -D warnings -D clippy::all
- run: cargo clippy --all-targets --features rustls-ring-native -- -D warnings -D clippy::all
- run: cargo clippy --all-targets --features rustls-ring-webpki -- -D warnings -D clippy::all
- run: cargo clippy --all-targets --features rustls-aws-lc-native -- -D warnings -D clippy::all
- run: cargo clippy --all-targets --features rustls-aws-lc-webpki -- -D warnings -D clippy::all
- run: cargo clippy --all-targets --features flate2 -- -D warnings -D clippy::all
- run: cargo clippy --all-targets --all-features -- -D warnings -D clippy::all
test:
strategy:
matrix:
os: [ ubuntu-latest, macos-latest, windows-latest ]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- run: rustup update
- uses: Swatinem/rust-cache@v2
- run: cargo test
- run: cargo test --features native-tls
- run: cargo test --features rustls-ring-native
- run: cargo test --features rustls-ring-webpki
if: ${{ matrix.os != 'windows-latest' }}
- run: cargo test --features rustls-aws-lc-native
if: ${{ matrix.os != 'windows-latest' }}
- run: cargo test --features rustls-aws-lc-webpki
if: ${{ matrix.os != 'windows-latest' }}
- run: cargo test --features flate2
- run: cargo test --all-features
if: ${{ matrix.os != 'windows-latest' }}
test_msv:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- run: rustup toolchain install nightly && rustup default 1.74.0
- uses: Swatinem/rust-cache@v2
- run: cargo +nightly update -Z direct-minimal-versions
env:
CARGO_RESOLVER_INCOMPATIBLE_RUST_VERSIONS: fallback
- run: cargo test
- run: cargo test --features native-tls
- run: cargo test --features rustls-ring-native
- run: cargo test --features rustls-ring-webpki
- run: cargo test --features rustls-aws-lc-native
- run: cargo test --features rustls-aws-lc-webpki
- run: cargo test --features flate2
- run: cargo test --all-features
rustdoc:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: rustup override set 1.82.0
- uses: Swatinem/rust-cache@v2
- run: cargo doc --all-features --no-deps
env:
RUSTDOCFLAGS: -D warnings
deny:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: taiki-e/install-action@v2
with: { tool: cargo-deny }
- run: cargo deny check
semver_checks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@v2
with: { tool: cargo-semver-checks }
- run: cargo semver-checks check-release
typos:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: taiki-e/install-action@v2
with: { tool: typos-cli }
- run: typos
codecov:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@v2
with: { tool: cargo-llvm-cov }
- run: |
source <(cargo llvm-cov show-env --export-prefix)
export CARGO_TARGET_DIR=$CARGO_LLVM_COV_TARGET_DIR
cargo llvm-cov clean --workspace
cargo test --features native-tls
cargo test --features rustls-ring-native
cargo test --features rustls-ring-webpki
cargo test --features flate2
cargo llvm-cov report --codecov --output-path codecov.json
- uses: codecov/codecov-action@v5
with:
files: codecov.json
flags: rust
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
codspeed:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@v2
with: { tool: cargo-codspeed }
- run: cargo codspeed build
- uses: CodSpeedHQ/action@v3
with:
run: cargo codspeed run
token: ${{ secrets.CODSPEED_TOKEN }}
|