Clean up the script so that any unexpected error terminates the script, and stop suppressing errors that may contain useful information (for example, that you are using the stable version but need to use the nightly). This is useful because if hyper.h is not up to date going forward the CI should flag it. As is, there are a bunch of changes to hyper.h that have not been checked in (or were generated by a newer version of the cbindgen script.) Fixes #2483.
213 lines
4.6 KiB
YAML
213 lines
4.6 KiB
YAML
name: CI
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- master
|
|
|
|
env:
|
|
RUST_BACKTRACE: 1
|
|
|
|
jobs:
|
|
ci-pass:
|
|
name: CI is green
|
|
runs-on: ubuntu-latest
|
|
needs:
|
|
- style
|
|
- test
|
|
- features
|
|
- ffi
|
|
- ffi-header
|
|
- doc
|
|
steps:
|
|
- run: exit 0
|
|
|
|
style:
|
|
name: Check Style
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v1
|
|
|
|
- name: Install Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: stable
|
|
override: true
|
|
components: rustfmt
|
|
|
|
- name: cargo fmt --check
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: fmt
|
|
args: --all -- --check
|
|
|
|
test:
|
|
name: Test ${{ matrix.rust }} on ${{ matrix.os }}
|
|
needs: [style]
|
|
strategy:
|
|
matrix:
|
|
rust:
|
|
- stable
|
|
- beta
|
|
- nightly
|
|
- 1.46
|
|
|
|
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
|
|
- rust: 1.46
|
|
features: "--features full"
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v1
|
|
|
|
- name: Install Rust (${{ matrix.rust }})
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: ${{ matrix.rust }}
|
|
override: true
|
|
|
|
- name: Test
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: test
|
|
args: ${{ matrix.features }}
|
|
|
|
- name: Test all benches
|
|
if: matrix.benches
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: test
|
|
args: --benches ${{ matrix.features }}
|
|
|
|
features:
|
|
name: features
|
|
needs: [style]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v1
|
|
|
|
- name: Install Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: nightly
|
|
override: true
|
|
|
|
- name: Install cargo-hack
|
|
run: cargo install 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@v1
|
|
|
|
- name: Install Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: stable
|
|
override: true
|
|
|
|
- name: Install cbindgen
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: install
|
|
args: cbindgen
|
|
|
|
- name: Build FFI
|
|
uses: actions-rs/cargo@v1
|
|
env:
|
|
RUSTFLAGS: --cfg hyper_unstable_ffi
|
|
with:
|
|
command: build
|
|
args: --features client,http1,http2,ffi
|
|
|
|
- name: Make Examples
|
|
run: cd capi/examples && make client
|
|
|
|
- name: Run FFI unit tests
|
|
uses: actions-rs/cargo@v1
|
|
env:
|
|
RUSTFLAGS: --cfg hyper_unstable_ffi
|
|
with:
|
|
command: test
|
|
args: --features full,ffi --lib
|
|
|
|
ffi-header:
|
|
name: Verify hyper.h is up to date
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v1
|
|
|
|
- name: Install Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: nightly
|
|
default: true
|
|
override: true
|
|
components: cargo
|
|
|
|
- name: Install cbindgen
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: install
|
|
args: cbindgen
|
|
|
|
- name: Build FFI
|
|
uses: actions-rs/cargo@v1
|
|
env:
|
|
RUSTFLAGS: --cfg hyper_unstable_ffi
|
|
with:
|
|
command: build
|
|
args: --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@v1
|
|
|
|
- name: Install Rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
toolchain: nightly
|
|
override: true
|
|
|
|
- name: cargo doc
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: rustdoc
|
|
args: --features full,ffi -- --cfg docsrs --cfg hyper_unstable_ffi -D broken-intra-doc-links
|