173 lines
4.4 KiB
YAML
173 lines
4.4 KiB
YAML
name: CI
|
|
|
|
on:
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
push:
|
|
branches:
|
|
- master
|
|
|
|
env:
|
|
RUSTFLAGS: -Dwarnings
|
|
RUST_BACKTRACE: 1
|
|
nightly: nightly-2021-04-13
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
jobs:
|
|
# Check formatting
|
|
rustfmt:
|
|
name: rustfmt
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install Rust
|
|
run: rustup update stable && rustup default stable
|
|
- name: Check formatting
|
|
run: cargo fmt --all -- --check
|
|
|
|
# TODO
|
|
# # Apply clippy lints
|
|
# clippy:
|
|
# name: clippy
|
|
# runs-on: ubuntu-latest
|
|
# steps:
|
|
# - uses: actions/checkout@v2
|
|
# - name: Apply clippy lints
|
|
# run: cargo clippy --all-features
|
|
|
|
# This represents the minimum Rust version supported by
|
|
# Bytes. Updating this should be done in a dedicated PR.
|
|
#
|
|
# Tests are not run as tests may require newer versions of
|
|
# rust.
|
|
minrust:
|
|
name: minrust
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install Rust
|
|
run: rustup update 1.39.0 && rustup default 1.39.0
|
|
- name: Check
|
|
run: . ci/test-stable.sh check
|
|
|
|
# Stable
|
|
stable:
|
|
name: stable
|
|
strategy:
|
|
matrix:
|
|
os:
|
|
- ubuntu-latest
|
|
- macos-latest
|
|
- windows-latest
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install Rust
|
|
# --no-self-update is necessary because the windows environment cannot self-update rustup.exe.
|
|
run: rustup update stable --no-self-update && rustup default stable
|
|
- name: Test
|
|
run: . ci/test-stable.sh test
|
|
|
|
# Nightly
|
|
nightly:
|
|
name: nightly
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install Rust
|
|
run: rustup update $nightly && rustup default $nightly
|
|
- name: Test
|
|
run: . ci/test-stable.sh test
|
|
|
|
# Run tests on some extra platforms
|
|
cross:
|
|
name: cross
|
|
strategy:
|
|
matrix:
|
|
target:
|
|
- i686-unknown-linux-gnu
|
|
- armv7-unknown-linux-gnueabihf
|
|
- powerpc-unknown-linux-gnu
|
|
- powerpc64-unknown-linux-gnu
|
|
- wasm32-unknown-unknown
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install Rust
|
|
run: rustup update stable && rustup default stable
|
|
- name: cross build --target ${{ matrix.target }}
|
|
run: |
|
|
cargo install cross
|
|
cross build --target ${{ matrix.target }}
|
|
if: matrix.target != 'wasm32-unknown-unknown'
|
|
# WASM support
|
|
- name: cargo build --target ${{ matrix.target }}
|
|
run: |
|
|
rustup target add ${{ matrix.target }}
|
|
cargo build --target ${{ matrix.target }}
|
|
if: matrix.target == 'wasm32-unknown-unknown'
|
|
|
|
# Sanitizers
|
|
tsan:
|
|
name: tsan
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install Rust
|
|
run: rustup update $nightly && rustup default $nightly
|
|
- name: Install rust-src
|
|
run: rustup component add rust-src
|
|
- name: ASAN / TSAN
|
|
run: . ci/tsan.sh
|
|
miri:
|
|
name: miri
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Miri
|
|
run: ci/miri.sh
|
|
|
|
# Loom
|
|
loom:
|
|
name: loom
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install Rust
|
|
run: rustup update $nightly && rustup default $nightly
|
|
- name: Loom tests
|
|
run: RUSTFLAGS="--cfg loom -Dwarnings" cargo test --lib
|
|
|
|
publish_docs:
|
|
name: Publish Documentation
|
|
needs:
|
|
- rustfmt
|
|
# - clippy
|
|
- stable
|
|
- nightly
|
|
- minrust
|
|
- cross
|
|
- tsan
|
|
- loom
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install Rust
|
|
run: rustup update stable && rustup default stable
|
|
- name: Build documentation
|
|
run: cargo doc --no-deps --all-features
|
|
env:
|
|
RUSTDOCFLAGS: --cfg docsrs
|
|
- name: Publish documentation
|
|
run: |
|
|
cd target/doc
|
|
git init
|
|
git add .
|
|
git -c user.name='ci' -c user.email='ci' commit -m 'Deploy Bytes API documentation'
|
|
git push -f -q https://git:${{ secrets.github_token }}@github.com/${{ github.repository }} HEAD:gh-pages
|
|
if: github.event_name == 'push' && github.event.ref == 'refs/heads/master' && github.repository == 'tokio-rs/bytes'
|