| 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 |