Skip to content

Tooling updates

Tooling updates #738

Workflow file for this run

# 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