name: CI # Forgejo Actions workflow. Forgejo resolves workflows from # .forgejo/workflows/ first (then .gitea/workflows/, then .github/workflows/). # # `runs-on: docker` matches the label exposed by the standard self-hosted # Forgejo runner. Change it if your runner was registered with another label. # # Actions are pinned to node20-compatible releases. Older forgejo-runner # versions (e.g. v6.4.0) reject any action whose action.yml declares # `using: node24` — checkout v4 is the last line that runs on node20. # # The pull-request-only version-bump gate lives in its own workflow # (version-bump.yml) because Forgejo does not reliably skip a job on a # job-level `if:` and reports the skipped job as a failure instead. on: push: pull_request: jobs: lint-and-test: runs-on: docker steps: - name: Checkout # v4 runs on node20 (v5+ require node24). uses: https://data.forgejo.org/actions/checkout@v4 - name: Install uv # Installed from the official script rather than a Node action so the # job works on runners that only support node20. run: | curl -LsSf https://astral.sh/uv/install.sh | sh echo "$HOME/.local/bin" >> "$GITHUB_PATH" export PATH="$HOME/.local/bin:$PATH" uv python install 3.13 uv --version - name: Lint (ruff) run: uvx --python 3.13 ruff check . - name: Test (pytest) # The suite only needs pytest: cadence.py imports nothing third-party # at module level, so no torch/whisper/ffmpeg is required here. run: uv run --python 3.13 --with pytest pytest -q