Hosekeeping (#74) #200
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
permissions: | |
contents: read | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
# Spend CI time only on latest ref: https://github.com/jonhoo/rust-ci-conf/pull/5 | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
name: check | |
jobs: | |
fmt: | |
runs-on: ubuntu-latest | |
name: stable / fmt | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Install stable | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt | |
- name: cargo fmt --check | |
run: cargo fmt --check | |
clippy: | |
runs-on: ubuntu-latest | |
name: ${{ matrix.toolchain }} / clippy | |
permissions: | |
contents: read | |
checks: write | |
strategy: | |
fail-fast: false | |
matrix: | |
toolchain: [stable, beta] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Install ${{ matrix.toolchain }} | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.toolchain }} | |
components: clippy | |
- name: cargo clippy | |
uses: actions-rs/clippy-check@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
semver: | |
runs-on: ubuntu-latest | |
name: semver | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Install stable | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt | |
- name: cargo-semver-checks | |
uses: obi1kenobi/cargo-semver-checks-action@v2 | |
doc: | |
# run docs generation on nightly rather than stable. This enables features like | |
# https://doc.rust-lang.org/beta/unstable-book/language-features/doc-cfg.html which allows an | |
# API be documented as only available in some specific platforms. | |
runs-on: ubuntu-latest | |
name: nightly / doc | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Install nightly | |
uses: dtolnay/rust-toolchain@nightly | |
- name: Install cargo-docs-rs | |
uses: dtolnay/install@cargo-docs-rs | |
- name: cargo docs-rs | |
run: cargo docs-rs | |
hack: | |
# cargo-hack checks combinations of feature flags to ensure that features are all additive | |
# which is required for feature unification | |
runs-on: ubuntu-latest | |
name: ubuntu / stable / features | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Install stable | |
uses: dtolnay/rust-toolchain@stable | |
- name: cargo install cargo-hack | |
uses: taiki-e/install-action@cargo-hack | |
# intentionally no target specifier; see https://github.com/jonhoo/rust-ci-conf/pull/4 | |
# --feature-powerset runs for every combination of features | |
- name: cargo hack | |
run: cargo | |
msrv: | |
runs-on: ubuntu-latest | |
# we use a matrix here just because env can't be used in job names | |
# https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability | |
strategy: | |
matrix: | |
msrv: [1.80.0] # due to Option::take_if usage | |
name: ubuntu / ${{ matrix.msrv }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Install ${{ matrix.msrv }} | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.msrv }} | |
- name: cargo +${{ matrix.msrv }} check | |
run: cargo check | |
rdme: | |
runs-on: ubuntu-latest | |
name: ubuntu / rdme | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install stable | |
uses: dtolnay/rust-toolchain@stable | |
- name: cargo install cargo-rdme | |
uses: taiki-e/install-action@cargo-rdme | |
- name: cargo rdme --check | |
run: cargo rdme --check |