diff options
Diffstat (limited to '.github/workflows/ci.yml')
-rw-r--r-- | .github/workflows/ci.yml | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..d15cd6a --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,154 @@ +name: CI + +on: + push: + branches: ["main"] + pull_request: + +env: + RUSTFLAGS: -Dwarnings + RUST_BACKTRACE: 1 + MSRV: 1.42.0 + +jobs: + build: + name: Build (stable, ${{ matrix.target }}) + runs-on: ubuntu-latest + strategy: + matrix: + target: + - x86_64-unknown-linux-gnu + - i686-unknown-linux-musl + steps: + - uses: actions/checkout@master + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + target: ${{ matrix.target }} + override: true + - name: cargo build --target ${{ matrix.target }} + uses: actions-rs/cargo@v1 + with: + command: build + args: --all-targets --target ${{ matrix.target }} + + build-msrv: + name: Build (MSRV) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: ${{ env.MSRV }} + override: true + - name: cargo +${{ env.MSRV }} build + uses: actions-rs/cargo@v1 + with: + command: build + env: + RUSTFLAGS: "" # remove -Dwarnings + + build-nightly: + name: Build (nightly) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: nightly + override: true + - name: cargo +nightly build + uses: actions-rs/cargo@v1 + with: + command: build + env: + RUSTFLAGS: "" # remove -Dwarnings + + test: + name: Tests (stable) + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + - name: Run tests + run: cargo test + + test-loom: + name: Loom tests (stable) + needs: build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + - name: Run Loom tests + run: ./bin/loom.sh + + clippy: + name: Clippy (stable) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + components: clippy + override: true + - name: cargo clippy --all-targets --all-features + uses: actions-rs/clippy-check@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + args: --all-targets --all-features + + rustfmt: + name: Rustfmt (stable) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + components: rustfmt + override: true + - name: Run rustfmt + uses: actions-rs/cargo@v1 + with: + command: fmt + args: -- --check + + all-systems-go: + name: "all systems go!" + needs: + - build + - build-msrv + # Note: we explicitly *don't* require the `build-nightly` job to pass, + # since the nightly Rust compiler is unstable. We don't want nightly + # regressions to break our build --- this CI job is intended for + # informational reasons rather than as a gatekeeper for merging PRs. + - test + - test-loom + - clippy + - rustfmt + runs-on: ubuntu-latest + steps: + - run: exit 0 |