| name: CI |
| |
| on: |
| pull_request: |
| branches: |
| - master |
| push: |
| branches: |
| - master |
| |
| env: |
| RUSTFLAGS: -Dwarnings |
| RUST_BACKTRACE: 1 |
| nightly: nightly-2020-12-17 |
| |
| 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-16.04 |
| 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 |
| - 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' |