Bevy 0.17 enables Wayland by default so the CI workflow needs to have it installed.
95 lines
3.7 KiB
YAML
95 lines
3.7 KiB
YAML
# This workflow runs whenever a PR is opened or updated, or a commit is pushed to main. It runs
|
|
# several checks:
|
|
# - fmt: checks that the code is formatted according to rustfmt
|
|
# - clippy: checks that the code does not contain any clippy warnings
|
|
# - doc: checks that the code can be documented without errors
|
|
# - hack: check combinations of feature flags
|
|
# - msrv: check that the msrv specified in the crate is correct
|
|
permissions:
|
|
contents: read
|
|
# This configuration allows maintainers of this repo to create a branch and pull request based on
|
|
# the new branch. Restricting the push trigger to the main branch ensures that the PR only gets
|
|
# built once.
|
|
on:
|
|
push:
|
|
branches: [trunk]
|
|
pull_request:
|
|
# If new code is pushed to a PR branch, then cancel in progress workflows for that PR. Ensures that
|
|
# we don't waste CI time, and returns results quicker 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
|
|
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 Dependencies
|
|
run: sudo apt-get update; sudo apt-get install -y --no-install-recommends libasound2-dev libudev-dev libwayland-dev
|
|
- name: Install nightly
|
|
uses: dtolnay/rust-toolchain@nightly
|
|
- name: cargo doc
|
|
run: cargo doc --no-deps --all-features
|
|
env:
|
|
RUSTDOCFLAGS: --cfg docsrs
|
|
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 Dependencies
|
|
run: sudo apt-get update; sudo apt-get install -y --no-install-recommends libasound2-dev libudev-dev libwayland-dev cmake
|
|
- 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 hack --feature-powerset check
|
|
msrv:
|
|
# check that we can build using the minimal rust version that is specified by this crate
|
|
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.88.0"]
|
|
name: ubuntu / ${{ matrix.msrv }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
- name: Install Dependencies
|
|
run: sudo apt-get update; sudo apt-get install -y --no-install-recommends libasound2-dev libudev-dev libwayland-dev
|
|
- name: Install ${{ matrix.msrv }}
|
|
uses: dtolnay/rust-toolchain@master
|
|
with:
|
|
toolchain: ${{ matrix.msrv }}
|
|
- name: cargo +${{ matrix.msrv }} check
|
|
run: cargo check
|