aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/ci.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/ci.yml')
-rw-r--r--.github/workflows/ci.yml154
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