docs(client): add example links (#3385) #2294
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 | |
- udeps | |
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 2018 $(git ls-files '*.rs'); then | |
printf "Please run \`rustfmt --edition 2018 \$(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 }} | |
- uses: Swatinem/rust-cache@v2 | |
- 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 }} | |
- uses: Swatinem/rust-cache@v2 | |
- 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 | |
- uses: Swatinem/rust-cache@v2 | |
- 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@stable | |
- name: Install cargo-hack | |
uses: taiki-e/install-action@cargo-hack | |
- uses: Swatinem/rust-cache@v2 | |
- name: check --feature-powerset | |
run: cargo hack --no-dev-deps check --feature-powerset --depth 2 --skip ffi,tracing | |
env: | |
RUSTFLAGS: "-D dead_code -D unused_imports" | |
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 | |
- uses: Swatinem/rust-cache@v2 | |
- 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 | |
- uses: Swatinem/rust-cache@v2 | |
- 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 | |
- uses: Swatinem/rust-cache@v2 | |
- name: cargo doc | |
run: cargo rustdoc --features full,ffi -- --cfg docsrs --cfg hyper_unstable_ffi -D rustdoc::broken-intra-doc-links | |
check-external-types: | |
name: Check exposed types | |
needs: [style, test] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: nightly-2023-10-10 # Compatible version for cargo-check-external-types | |
- name: Install cargo-check-external-types | |
uses: taiki-e/cache-cargo-install-action@v1 | |
with: | |
tool: [email protected] | |
- uses: Swatinem/rust-cache@v2 | |
- name: check-external-types | |
run: cargo check-external-types --config .github/workflows/external-types.toml | |
udeps: | |
needs: [style] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust | |
uses: dtolnay/rust-toolchain@nightly | |
- name: Install cargo-udeps | |
uses: taiki-e/install-action@cargo-udeps | |
- uses: Swatinem/rust-cache@v2 | |
- name: Check unused dependencies on default features | |
run: cargo udeps | |
- name: Check unused dependencies on full features | |
run: cargo udeps --features full |