feat(upgrade): introduce tracing as an optional unstable feature #2146
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
pull_request: | |
push: | |
branches: | |
- master | |
env: | |
RUST_BACKTRACE: 1 | |
permissions: | |
contents: read # to fetch code (actions/checkout) | |
jobs: | |
ci-pass: | |
name: CI is green | |
runs-on: ubuntu-latest | |
needs: | |
- style | |
- test | |
- msrv | |
- miri | |
- features | |
- ffi | |
- ffi-header | |
- doc | |
- check-external-types | |
steps: | |
- run: exit 0 | |
style: | |
name: Check Style | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt | |
- name: cargo fmt --check | |
run: | | |
if ! rustfmt --check --edition 2021 $(git ls-files '*.rs'); then | |
printf "Please run \`rustfmt --edition 2021 \$(git ls-files '*.rs')\` to fix rustfmt errors.\nSee CONTRIBUTING.md for more details.\n" >&2 | |
exit 1 | |
fi | |
test: | |
name: Test ${{ matrix.rust }} on ${{ matrix.os }} | |
needs: [style] | |
strategy: | |
matrix: | |
rust: | |
- stable | |
- beta | |
- nightly | |
os: | |
- ubuntu-latest | |
- windows-latest | |
- macOS-latest | |
include: | |
- rust: stable | |
features: "--features full" | |
- rust: beta | |
features: "--features full" | |
- rust: nightly | |
features: "--features full,nightly" | |
benches: true | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust (${{ matrix.rust }}) | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.rust }} | |
- name: Test | |
run: cargo test ${{ matrix.features }} | |
- name: Test all benches | |
if: matrix.benches | |
run: cargo test --benches ${{ matrix.features }} | |
msrv: | |
name: Check MSRV | |
needs: [style] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Get MSRV from package metadata | |
id: msrv | |
run: grep rust-version Cargo.toml | cut -d'"' -f2 | sed 's/^/version=/' >> $GITHUB_OUTPUT | |
- name: Install Rust (${{ steps.msrv.outputs.version }}) | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ steps.msrv.outputs.version }} | |
- name: Check | |
run: cargo check --features full | |
miri: | |
name: Test with Miri | |
needs: [style] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: miri | |
- name: Test | |
# Can't enable tcp feature since Miri does not support the tokio runtime | |
run: MIRIFLAGS="-Zmiri-disable-isolation" cargo miri test --features http1,http2,client,server,nightly | |
features: | |
name: features | |
needs: [style] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@nightly | |
- name: Install cargo-hack | |
uses: taiki-e/install-action@cargo-hack | |
- name: check --feature-powerset | |
run: cargo hack check --feature-powerset --depth 2 --skip ffi -Z avoid-dev-deps | |
ffi: | |
name: Test C API (FFI) | |
needs: [style] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@stable | |
- name: Build FFI | |
env: | |
RUSTFLAGS: --cfg hyper_unstable_ffi | |
run: cargo rustc --features client,http1,http2,ffi --crate-type cdylib | |
- name: Make Examples | |
run: cd capi/examples && make client | |
- name: Run FFI unit tests | |
env: | |
RUSTFLAGS: --cfg hyper_unstable_ffi | |
run: cargo test --features server,client,http1,http2,ffi --lib | |
ffi-header: | |
name: Verify hyper.h is up to date | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@stable | |
- name: Install cbindgen | |
uses: taiki-e/cache-cargo-install-action@v1 | |
with: | |
tool: cbindgen | |
- name: Install cargo-expand | |
uses: taiki-e/cache-cargo-install-action@v1 | |
with: | |
tool: cargo-expand | |
- name: Build FFI | |
env: | |
RUSTFLAGS: --cfg hyper_unstable_ffi | |
run: cargo build --features client,http1,http2,ffi | |
- name: Ensure that hyper.h is up to date | |
run: ./capi/gen_header.sh --verify | |
doc: | |
name: Build docs | |
needs: [style, test] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@nightly | |
- name: cargo doc | |
run: cargo rustdoc --features full,ffi -- --cfg docsrs --cfg hyper_unstable_ffi -D broken-intra-doc-links | |
check-external-types: | |
name: Check exposed types | |
needs: [style, test] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: nightly-2023-05-31 # Compatible version for cargo-check-external-types | |
- name: Install cargo-check-external-types | |
uses: actions-rs/install@v0.1 | |
with: | |
crate: cargo-check-external-types | |
version: 0.1.7 | |
use-tool-cache: true | |
- name: check-external-types | |
run: cargo check-external-types --config .github/workflows/external-types.toml |