[ci] make readme generation a just command #1402
Workflow file for this run
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
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
name: CI | |
jobs: | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
env: | |
RUSTFLAGS: -D warnings | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt, clippy | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab # v2 | |
- name: Install just | |
uses: taiki-e/install-action@just | |
- name: Lint (clippy) | |
run: just bootstrap clippy | |
- name: Install cargo-hack | |
uses: taiki-e/install-action@cargo-hack | |
- name: Lint (rustfmt) | |
run: cargo xfmt --check | |
- name: Install cargo readme | |
uses: taiki-e/install-action@8484225d9734e230a8bf38421a4ffec1cc249372 # v2 | |
with: | |
tool: cargo-readme | |
- name: Generate readmes | |
run: just generate-readmes | |
- name: Check for differences | |
run: git diff --exit-code | |
# cargo hack might cause changes to Cargo.lock which can cause the git diff above to fail. Put | |
# this at the end. | |
- name: Clippy feature powerset for target-spec | |
run: cargo hack --feature-powerset --package target-spec clippy | |
build: | |
name: Build and test core crates | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-14, windows-latest] | |
rust-version: ["1.78", stable] | |
fail-fast: false | |
env: | |
RUSTFLAGS: -D warnings | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.rust-version }} | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab # v2 | |
# Build all packages we care about one by one to ensure feature unification | |
# doesn't happen. | |
# Build all targets to ensure examples are built as well. | |
- name: Build target-spec | |
run: cargo build --all-targets --package target-spec | |
- name: Build guppy-summaries | |
run: cargo build --all-targets --package guppy-summaries | |
- name: Build guppy | |
run: cargo build --all-targets --package guppy | |
- name: Build determinator | |
run: cargo build --all-targets --package determinator | |
- name: Build hakari | |
run: cargo build --all-targets --package hakari | |
- name: Install latest nextest release | |
uses: taiki-e/install-action@nextest | |
- name: Run tests for core crates | |
run: cargo nextest run --package target-spec --package guppy-summaries --package guppy --package determinator --package hakari | |
- name: Install cargo-hack | |
uses: taiki-e/install-action@cargo-hack | |
- name: Check feature powerset for target-spec | |
run: cargo hack --feature-powerset --package target-spec nextest run | |
build-all-features: | |
name: Build and test (all features) | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-14, windows-latest] | |
rust-version: ["1.78", stable] | |
fail-fast: false | |
env: | |
RUSTFLAGS: -D warnings | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.rust-version }} | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab # v2 | |
- name: Build | |
# Build all targets to ensure examples are built as well. | |
# Exclude cargo-compare so that it only runs on the cfg-expr version below. | |
run: cargo test --no-run --all-targets --all-features --workspace --exclude cargo-compare | |
- name: Run doctests | |
run: cargo test --doc --all-features --workspace --exclude cargo-compare | |
- name: Install latest nextest release | |
uses: taiki-e/install-action@nextest | |
- name: Run all other tests | |
run: cargo nextest run --all-targets --all-features --workspace --exclude cargo-compare | |
build-rustdoc: | |
name: Build documentation | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
fail-fast: false | |
env: | |
RUSTDOCFLAGS: -D warnings | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 | |
- uses: dtolnay/rust-toolchain@stable | |
# Note: caching doesn't appear to work for rustdoc as of 2022-12-04, and we're exceeding cache | |
# sizes anyway | |
- name: Build rustdoc | |
# cargo-compare currently pulls in cargo which bloats build times massively | |
run: cargo doc --all-features --workspace --exclude cargo-compare | |
test-extended: | |
name: cargo-compare extended tests | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
# Don't run cargo-compare tests on Windows for now. See | |
# https://github.com/facebookincubator/cargo-guppy/issues/265. | |
os: [ubuntu-latest, macos-14] | |
fail-fast: false | |
env: | |
RUSTFLAGS: -D warnings | |
PROPTEST_MULTIPLIER: 64 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 | |
# This matches the cfg-expr version. | |
- uses: dtolnay/[email protected] | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab # v2 | |
- name: Build and test | |
run: cargo test --package cargo-compare --release | |
aarch64-build: | |
runs-on: ubuntu-latest | |
name: Cross-compile to aarch64 | |
env: | |
RUSTFLAGS: -D warnings | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
targets: aarch64-unknown-linux-gnu | |
- uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab # v2 | |
- name: Build | |
uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # v1 | |
with: | |
use-cross: true | |
command: build | |
# * Exclude cargo-compare because it depends on cargo, which in turn | |
# depends on openssl, and getting *that* to cross-compile is a | |
# headache. | |
# * Build all targets to ensure examples are built as well. | |
args: --target aarch64-unknown-linux-gnu --workspace --exclude cargo-compare --all-targets | |
# TODO: run tests somehow? possibly through cross/qemu |