summaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
authorCarl Lerche <me@carllerche.com>2020-07-24 16:28:24 -0700
committerGitHub <noreply@github.com>2020-07-24 16:28:24 -0700
commit9943acda81e19563c9f35ad2426e473732760e75 (patch)
treef73298e9a38e90b15756634558d0c9e103544853 /.github
parent4fca1974e9d9f95fab7d723619294cb4b2dcebbb (diff)
chore: complete CI migration to Github Actions (#2680)
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/ci.yml222
-rw-r--r--.github/workflows/test_tokio.yml129
2 files changed, 222 insertions, 129 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 00000000..33ac957c
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,222 @@
+on:
+ push:
+ branches: ["master"]
+ pull_request:
+ branches: ["master"]
+
+name: CI
+
+env:
+ RUSTFLAGS: -Dwarnings
+ RUST_BACKTRACE: 1
+ nightly: nightly-2020-07-12
+ minrust: 1.39.0
+
+jobs:
+ test:
+ name: test tokio full
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ os:
+ - windows-latest
+ - ubuntu-latest
+ - macos-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Install Rust
+ run: rustup update stable
+ - name: Install cargo-hack
+ run: cargo install cargo-hack
+
+ # Run `tokio` with `full` features. This excludes testing utilities which
+ # can alter the runtime behavior of Tokio.
+ - name: test tokio full
+ run: cargo test --features full
+ working-directory: tokio
+
+ # Check `tokio` with `full + parking_lot` to make sure it compiles.
+ - name: check tokio full,parking_lot
+ run: cargo check --features full,parking_lot
+ working-directory: tokio
+
+ # Test **all** crates in the workspace with all features.
+ - name: test all --all-features
+ run: cargo test --workspace --all-features
+
+ # Run integration tests for each feature
+ - name: test tests-integration --each-feature
+ run: cargo hack test --each-feature
+ working-directory: tests-integration
+
+ # Run macro build tests
+ - name: test tests-build --each-feature
+ run: cargo hack test --each-feature
+ working-directory: tests-build
+
+ test-unstable:
+ name: test tokio full --unstable
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ os:
+ - windows-latest
+ - ubuntu-latest
+ - macos-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Install Rust
+ run: rustup update stable
+
+ # Run `tokio` with "unstable" cfg flag.
+ - name: test tokio full --cfg unstable
+ run: cargo test --features full
+ working-directory: tokio
+ env:
+ RUSTFLAGS: '--cfg tokio_unstable'
+
+ miri:
+ name: miri
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions-rs/toolchain@v1
+ with:
+ toolchain: ${{ env.nightly }}
+ override: true
+ - name: Install Miri
+ run: |
+ set -e
+ rustup component add miri
+ cargo miri setup
+ rm -rf tokio/tests
+
+ - name: miri
+ run: cargo miri test --features rt-core,rt-threaded,rt-util,sync -- -- task
+ working-directory: tokio
+
+ cross:
+ name: cross
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ target:
+ - i686-unknown-linux-gnu
+ - powerpc-unknown-linux-gnu
+ - powerpc64-unknown-linux-gnu
+ - mips-unknown-linux-gnu
+ - arm-linux-androideabi
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ target: ${{ matrix.target }}
+ override: true
+ - uses: actions-rs/cargo@v1
+ with:
+ use-cross: true
+ command: check
+ args: --workspace --target ${{ matrix.target }}
+
+ features:
+ name: features
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions-rs/toolchain@v1
+ with:
+ toolchain: ${{ env.nightly }}
+ override: true
+ - name: Install cargo-hack
+ run: cargo install cargo-hack
+
+ - name: check --each-feature
+ run: cargo hack check --all --each-feature -Z avoid-dev-deps
+
+ # Try with unstable feature flags
+ - name: check --each-feature --unstable
+ run: cargo hack check --all --each-feature -Z avoid-dev-deps
+ env:
+ RUSTFLAGS: --cfg tokio_unstable
+
+ minrust:
+ name: minrust
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions-rs/toolchain@v1
+ with:
+ toolchain: ${{ env.minrust }}
+ override: true
+
+ - name: "test --workspace --all-features"
+ run: cargo check --workspace --all-features
+
+ fmt:
+ name: fmt
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Install Rust
+ run: rustup update stable
+ - name: Install rustfmt
+ run: rustup component add rustfmt
+
+ # Check fmt
+ - name: "rustfmt --check"
+ # Workaround for rust-lang/cargo#7732
+ run: rustfmt --check --edition 2018 $(find . -name '*.rs' -print)
+
+ clippy:
+ name: clippy
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Install Rust
+ run: rustup update stable
+ - name: Install clippy
+ run: rustup component add clippy
+
+ # Run clippy
+ - name: "clippy --all"
+ run: cargo clippy --all --tests
+
+ docs:
+ name: docs
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions-rs/toolchain@v1
+ with:
+ toolchain: ${{ env.nightly }}
+ override: true
+
+ - name: "doc --lib --all-features"
+ run: cargo doc --lib --no-deps --all-features
+ env:
+ RUSTDOCFLAGS: --cfg docsrs
+
+ loom:
+ name: loom
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ scope:
+ - --skip loom_pool
+ - loom_pool::group_a
+ - loom_pool::group_b
+ - loom_pool::group_c
+ - loom_pool::group_d
+ steps:
+ - uses: actions/checkout@v2
+ - name: Install Rust
+ run: rustup update stable
+
+ - name: loom ${{ matrix.scope }}
+ run: cargo test --lib --release --features full -- --nocapture $SCOPE
+ working-directory: tokio
+ env:
+ RUSTFLAGS: --cfg loom --cfg tokio_unstable
+ LOOM_MAX_PREEMPTIONS: 2
+ SCOPE: ${{ matrix.scope }}
diff --git a/.github/workflows/test_tokio.yml b/.github/workflows/test_tokio.yml
deleted file mode 100644
index d6d32b8f..00000000
--- a/.github/workflows/test_tokio.yml
+++ /dev/null
@@ -1,129 +0,0 @@
-on:
- push:
- branches: ["master"]
- pull_request:
- branches: ["master"]
-
-name: Test tokio
-
-env:
- RUSTFLAGS: -Dwarnings
- RUST_BACKTRACE: 1
- nightly: nightly-2020-01-25
-
-jobs:
- test_tokio:
- name: Test tokio full
- runs-on: ${{ matrix.os }}
- strategy:
- matrix:
- os:
- - windows-latest
- - ubuntu-latest
- - macos-latest
- steps:
- - uses: actions/checkout@master
- - name: Install Rust
- run: rustup update stable
-
- # Run `tokio` with only `full`
- - uses: actions-rs/cargo@v1
- with:
- command: test
- args: --manifest-path ${{ github.workspace }}/tokio/Cargo.toml --features full
- name: tokio - cargo test --features full
-
- # Run `tokio` with "unstable" cfg flag
- - uses: actions-rs/cargo@v1
- with:
- command: test
- args: --manifest-path ${{ github.workspace }}/tokio/Cargo.toml --features full
- env:
- RUSTFLAGS: '--cfg tokio_unstable'
- name: tokio - cargo test --features full --cfg tokio_unstable
-
- test_cross_subcrates:
- name: Test ${{ matrix.crate }} (${{ matrix.os }}) all-features
- runs-on: ${{ matrix.os }}
- strategy:
- matrix:
- crate:
- - tokio
- - tests-integration
- os:
- - windows-latest
- - ubuntu-latest
- - macos-latest
- include:
- - crate: tokio-macros
- os: ubuntu-latest
- - crate: tokio-test
- os: ubuntu-latest
- - crate: tokio-util
- os: ubuntu-latest
- - crate: examples
- os: ubuntu-latest
-
- steps:
- - uses: actions/checkout@master
- - name: Install Rust
- run: rustup update stable
-
- # Run with all crate features
- - name: ${{ matrix.crate }} - cargo test --all-features
- uses: actions-rs/cargo@v1
- with:
- command: test
- args: --manifest-path ${{ github.workspace }}/${{ matrix.crate }}/Cargo.toml --all-features
-
- # Check benches
- - name: ${{ matrix.crate }} - cargo check --benches
- uses: actions-rs/cargo@v1
- with:
- command: check
- args: --manifest-path ${{ github.workspace }}/${{ matrix.crate }}/Cargo.toml --all-features --benches
-
- - name: Patch Cargo.toml
- shell: bash
- run: |
- set -e
-
- # Remove any existing patch statements
- mv Cargo.toml Cargo.toml.bck
- sed -n '/\[patch.crates-io\]/q;p' Cargo.toml.bck > Cargo.toml
-
- # Patch all crates
- cat ci/patch.toml >> Cargo.toml
-
- # Print `Cargo.toml` for debugging
- echo "~~~~ Cargo.toml ~~~~"
- cat Cargo.toml
- echo "~~~~~~~~~~~~~~~~~~~~"
-
- # Run with all crate features
- - name: ${{ matrix.crate }} - cargo test --all-features
- uses: actions-rs/cargo@v1
- with:
- command: test
- args: --manifest-path ${{ github.workspace }}/${{ matrix.crate }}/Cargo.toml --all-features
-
- test_integration:
- name: Integration tests
- runs-on: ${{ matrix.os }}
- strategy:
- matrix:
- os:
- - windows-latest
- - ubuntu-latest
- - macos-latest
- steps:
- - uses: actions/checkout@master
- - name: Install Rust
- run: rustup update stable
- - run: cargo install cargo-hack
- name: Install cargo-hack
- - uses: actions-rs/cargo@v1
- name: cargo hack test --each-feature
- with:
- command: hack
- args: test --manifest-path ${{ github.workspace }}/tests-integration/Cargo.toml --each-feature