diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml new file mode 100644 index 0000000..84e5e36 --- /dev/null +++ b/.forgejo/workflows/ci.yml @@ -0,0 +1,41 @@ +# Forgejo Actions CI for Colibri. +# +# Gates every push to main and every pull request on the same checks agents are +# expected to run locally (./scripts/ci-checks.sh): rustfmt, clippy, workspace +# tests, and the markdown format gate. This is what would have caught the +# build-break that PR #23 had to fix. +# +# Requirements (verify on the Forgejo instance): +# - A registered Forgejo Actions runner whose labels include `ubuntu-latest` +# (adjust `runs-on` below to match your runner's label if different). +# - The runner can pull the `rust` and `node` container images and reach +# crates.io / npm for dependencies. +name: CI + +on: + push: + branches: [main] + pull_request: + +jobs: + rust: + runs-on: ubuntu-latest + container: rust:1.95 + steps: + - uses: actions/checkout@v4 + - name: Ensure rustfmt + clippy are present + run: rustup component add rustfmt clippy + - name: cargo fmt --check + run: cargo fmt --check + - name: cargo clippy (warnings = errors) + run: cargo clippy --workspace --all-targets -- -D warnings + - name: cargo test --workspace + run: cargo test --workspace + + markdown: + runs-on: ubuntu-latest + container: node:20 + steps: + - uses: actions/checkout@v4 + - name: Markdown format gate + run: ./scripts/check-format.sh diff --git a/scripts/ci-checks.sh b/scripts/ci-checks.sh new file mode 100755 index 0000000..bf33164 --- /dev/null +++ b/scripts/ci-checks.sh @@ -0,0 +1,25 @@ +#!/bin/sh +# Run every repository gate, the same set CI runs. Use this before pushing. +# +# ./scripts/ci-checks.sh +# +# Gates: rustfmt, clippy (warnings = errors), workspace tests, markdown format. + +set -eu + +ROOT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)" +cd "$ROOT_DIR" + +echo "==> cargo fmt --check" +cargo fmt --check + +echo "==> cargo clippy --workspace --all-targets -- -D warnings" +cargo clippy --workspace --all-targets -- -D warnings + +echo "==> cargo test --workspace" +cargo test --workspace + +echo "==> markdown format gate" +./scripts/check-format.sh + +echo "All checks passed."