mirror of
https://github.com/tribufu/rust-gamedig
synced 2026-05-06 07:17:27 +00:00
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
199 lines
6.6 KiB
YAML
199 lines
6.6 KiB
YAML
# yaml-language-server: $schema=https://raw.githubusercontent.com/softprops/github-actions-schemas/master/workflow.json
|
|
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: ["main"]
|
|
paths:
|
|
- "**.rs" # Any rust file
|
|
- "**/Cargo.toml" # Any Cargo.toml
|
|
- ".rustfmt.toml"
|
|
- ".github/workflows/ci.yml" # This action
|
|
pull_request:
|
|
branches: ["main"]
|
|
paths:
|
|
- "**.rs" # Any rust file
|
|
- "**/Cargo.toml" # Any Cargo.toml
|
|
- ".rustfmt.toml"
|
|
- ".github/workflows/ci.yml" # This action
|
|
|
|
env:
|
|
CARGO_TERM_COLOR: always
|
|
|
|
jobs:
|
|
# First check that we can build EVERYTHING and that tests pass
|
|
build_first:
|
|
name: "Build, check, and test with all features"
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
cli: ${{ steps.filter.outputs.cli }}
|
|
lib: ${{ steps.filter.outputs.lib }}
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
shared-key: "cargo-deps"
|
|
cache-targets: false
|
|
- name: Run Build
|
|
run: cargo check --verbose --workspace --bins --lib --examples --all-features
|
|
- name: Run Tests
|
|
run: cargo test --verbose --workspace --bins --lib --examples --tests --all-features
|
|
# Check what paths were modified so we only run the required tests
|
|
- uses: dorny/paths-filter@v3
|
|
id: filter
|
|
with:
|
|
filters: |
|
|
cli:
|
|
- 'crates/cli/**'
|
|
lib:
|
|
- 'crates/lib/**'
|
|
|
|
# If we were able to build then test different feature combinations compile with the library
|
|
build_lib:
|
|
runs-on: ubuntu-latest
|
|
needs: ["build_first"]
|
|
# Only run if library files were modified
|
|
if: ${{ needs.build_first.outputs.lib == 'true' }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- build_type: ""
|
|
build_name: "Default"
|
|
- build_type: "--no-default-features"
|
|
build_name: "No features"
|
|
- build_type: "--no-default-features --features games"
|
|
build_name: "Just games"
|
|
- build_type: "--no-default-features --features services"
|
|
build_name: "Just Services"
|
|
- build_type: "--no-default-features --features game_defs"
|
|
build_name: "Just Game definitions"
|
|
- build_type: "--no-default-features --features serde"
|
|
build_name: "Just serde"
|
|
name: "Build library ${{ matrix.build_name }}"
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
shared-key: "cargo-deps"
|
|
cache-targets: false
|
|
save-if: false
|
|
- name: Run Build
|
|
run: cargo check -p gamedig --verbose --lib --examples --tests ${{ matrix.build_type }}
|
|
|
|
# If we were able to build then test different feature combinations compile with the CLI
|
|
build_cli:
|
|
runs-on: ubuntu-latest
|
|
needs: ["build_first"]
|
|
# Only run if CLI files were modified
|
|
if: ${{ needs.build_first.outputs.cli == 'true' }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- build_type: ""
|
|
build_name: "Default"
|
|
- build_type: "--no-default-features"
|
|
build_name: "No features"
|
|
name: "Build CLI ${{ matrix.build_name }}"
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
shared-key: "cargo-deps"
|
|
cache-targets: false
|
|
save-if: false
|
|
- name: Run Build
|
|
run: cargo check -p gamedig_cli --verbose --bins --examples --tests ${{ matrix.build_type }}
|
|
|
|
# If we were able to build then test the MSRV compiles (for the libary as not enforced for CLI)
|
|
build_msrv:
|
|
name: "Build using MSRV (lib only)"
|
|
runs-on: ubuntu-latest
|
|
needs: ["build_first"]
|
|
# Only run if library files were modified
|
|
if: ${{ needs.build_first.outputs.lib == 'true' }}
|
|
# Unfortunate hard-coding of rustup directory so that rust-cache caches it
|
|
env:
|
|
RUSTUP_HOME: /home/runner/.rustup
|
|
steps:
|
|
# Act's rust runner has rustup in a different place
|
|
- if: ${{ env.ACT }}
|
|
run: mkdir -p /home/runner && ln -s /usr/share/rust/.rustup /home/runner/.rustup
|
|
- uses: actions/checkout@v5
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
cache-targets: false
|
|
cache-directories: ${{ env.RUSTUP_HOME }}/toolchains
|
|
- name: Install MSRV
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: 1.82.0
|
|
override: true
|
|
- name: Run MSRV
|
|
run: cargo check -p gamedig
|
|
# Check the code is formatted properly
|
|
formatting:
|
|
name: "Check code formatting"
|
|
runs-on: ubuntu-latest
|
|
# Unfortunate hard-coding of rustup directory so that rust-cache caches it
|
|
env:
|
|
RUSTUP_HOME: /home/runner/.rustup
|
|
steps:
|
|
# Act's rust runner has rustup in a different place
|
|
- if: ${{ env.ACT }}
|
|
run: mkdir -p /home/runner && ln -s /usr/share/rust/.rustup /home/runner/.rustup
|
|
- uses: actions/checkout@v5
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
cache-targets: false
|
|
cache-directories: ${{ env.RUSTUP_HOME }}/toolchains
|
|
- name: Install Formatting nightly
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: nightly-2025-04-19
|
|
components: rustfmt
|
|
override: true
|
|
- name: Run Formatting check
|
|
run: cargo fmt --check --verbose
|
|
|
|
# If we were able to build then lint the codebase with clippy
|
|
clippy:
|
|
name: "Run clippy tests"
|
|
runs-on: ubuntu-latest
|
|
needs: ["build_first"]
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
shared-key: "cargo-deps"
|
|
cache-targets: false
|
|
save-if: false
|
|
# Run github actions version of clippy that adds annotations
|
|
- name: Run Clippy
|
|
uses: actions-rs/clippy-check@v1
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
args: --workspace --bins --lib --examples --tests --all-features
|
|
if: ${{ !env.ACT }} # skip during local actions testing
|
|
# Run clippy binary
|
|
- name: Run clippy (local)
|
|
run: cargo clippy --verbose --workspace --bins --lib --examples --tests --all-features
|
|
if: ${{ env.ACT }} # only run during local actions testing
|
|
|
|
# If we were able to build then test that rustdoc (and rustdoc examples) compile
|
|
doc:
|
|
name: "Check rustdoc"
|
|
runs-on: ubuntu-latest
|
|
needs: ["build_first"]
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
shared-key: "cargo-deps"
|
|
cache-targets: false
|
|
save-if: false
|
|
- name: "Run cargo doc"
|
|
run: cargo doc --workspace
|
|
env:
|
|
RUSTDOCFLAGS: "-D warnings"
|