The gates of scripts/gates.sh that need neither the install nor a display (fmt, clippy, the workspace tests without an install, the doc-link and render-pass lints, the player build and its tests), on ubuntu-latest, so a red pull request is seen before anyone builds it. A branch of this repository skips the job: it runs the full chain before it lands. The job reads the repository only, keeps no credentials in the checkout, pins its two actions by commit, drops debuginfo for the runner's disk and caches dependencies. gates.sh and CONTRIBUTING say what runs where. actionlint passes; the system packages are the ones CONTRIBUTING names for Linux. The workflow's first run is a manual one on main once it lands. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
55 lines
2.1 KiB
YAML
55 lines
2.1 KiB
YAML
# The gates of scripts/gates.sh that need neither a WoW install nor a display, on Linux, for a pull
|
|
# request from a fork: a red one is seen before anyone builds it. The data-gated tests, the engine
|
|
# boot checks and a live run happen on the maintainer's machine before it lands.
|
|
name: CI
|
|
|
|
on:
|
|
pull_request:
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: ci-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
gates:
|
|
# A branch of this repository runs the full chain before it lands; a fork's pull request runs here.
|
|
if: github.event_name == 'workflow_dispatch' || github.event.pull_request.head.repo.full_name != github.repository
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 150
|
|
env:
|
|
CARGO_TERM_COLOR: always
|
|
CARGO_INCREMENTAL: 0
|
|
# No debuginfo: it is most of target/, and a runner's disk is small.
|
|
CARGO_PROFILE_DEV_DEBUG: 0
|
|
# Set and empty: no install, as the gates' test-no-install runs.
|
|
WOW_DATA: ""
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
- name: Free disk space
|
|
run: sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL
|
|
- name: System libraries
|
|
run: sudo apt-get update -qq && sudo apt-get install -y -qq pkg-config libasound2-dev libudev-dev
|
|
- name: Toolchain
|
|
run: rustup toolchain install && rustc -V
|
|
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2.9.2
|
|
- name: fmt
|
|
run: cargo fmt --all -- --check
|
|
- name: clippy
|
|
run: cargo clippy --workspace --all-targets -- -D warnings
|
|
- name: test
|
|
run: cargo test --workspace
|
|
- name: doc-links
|
|
run: scripts/doc-links.py
|
|
- name: pass-span-lint
|
|
run: scripts/pass-span-lint.py
|
|
- name: player-build
|
|
run: cargo build -p benilla --no-default-features
|
|
- name: player-tests
|
|
run: cargo test -p benilla-formats -p benilla-app --no-default-features --lib
|