Tooling updates #742
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
# Minimal CI workflow | |
# Run when someone opens a PR and adds commits to the PR (this is recognized as a push to master) | |
# Includes basic checks and unit/integration checks on Linux only | |
name: Minimal CI | |
env: | |
# Local variables | |
# Note: using variables is limited at the moment, see https://github.com/actions/runner/issues/480 | |
GODOT_VER: "3.5.1-stable" | |
# Don't use more features like "gdnative_bindings_generator/debug" to keep CI truly minimal | |
GDRUST_FEATURES: "gdnative/async,gdnative/serde" | |
RIPGREP_VERSION: "13.0.0" | |
on: | |
pull_request: | |
branches: | |
- master | |
defaults: | |
run: | |
shell: bash | |
# If a new commit is pushed before the old one's CI has completed (on the same branch), abort previous run | |
concurrency: | |
group: ${{ github.head_ref }} | |
cancel-in-progress: true | |
jobs: | |
rustfmt: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: "Install Rust" | |
uses: ./.github/composite/rust | |
with: | |
rust: stable | |
components: rustfmt | |
- name: "Check rustfmt" | |
run: cargo fmt --all -- --check | |
clippy: | |
runs-on: ubuntu-latest | |
continue-on-error: ${{ matrix.rust == 'nightly' }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: "Install Rust" | |
uses: ./.github/composite/rust | |
with: | |
rust: stable | |
components: clippy | |
- name: "Check clippy" | |
run: cargo clippy --workspace --features ${GDRUST_FEATURES} -- -D clippy::style -D clippy::complexity -D clippy::perf -D clippy::dbg_macro -D clippy::todo -D clippy::unimplemented -D warnings | |
check-todo: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: "Install ripgrep" | |
run: | | |
cd /tmp | |
wget --no-verbose https://github.com/BurntSushi/ripgrep/releases/download/${RIPGREP_VERSION}/ripgrep-${RIPGREP_VERSION}-x86_64-unknown-linux-musl.tar.gz -O ripgrep.tar.gz | |
tar -zxvf ripgrep.tar.gz | |
sudo mv ripgrep-${RIPGREP_VERSION}-x86_64-unknown-linux-musl/rg /usr/bin | |
- name: "Look for TODO comments without issue numbers attached to them" | |
run: bash tools/detect-todo.sh | |
unit-test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: "Install Rust" | |
uses: ./.github/composite/rust | |
- name: "Compile tests" | |
run: cargo test --workspace --features ${GDRUST_FEATURES} --no-run | |
- name: "Test" | |
run: cargo test --workspace --features ${GDRUST_FEATURES} | |
integration-test-godot: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: "Run Godot integration test" | |
uses: ./.github/composite/godot | |
with: | |
godot_ver: ${{ env.GODOT_VER }} | |
# --------------------------------------------------------------------------------------------------------------------------------------------- | |
# CI status report | |
# Job to notify merge queue about success/failure. Named the same as the one in full-ci. | |
ci-status: | |
if: always() | |
needs: | |
- rustfmt | |
- clippy | |
- check-todo | |
- unit-test | |
- integration-test-godot | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Success" | |
if: ${{ !(contains(needs.*.result, 'failure')) }} | |
run: exit 0 | |
- name: "Failure" | |
if: ${{ contains(needs.*.result, 'failure') }} | |
run: exit 1 |