# CI on Gitea (no marketplace) - Gitea runner may not auto-checkout; and `actions/checkout` might be unavailable. - Workflow includes a **manual checkout** step using `$GITHUB_SERVER_URL` and `$GITHUB_REPOSITORY`. - Runner label used: `ubuntu-latest:host` (matches your self-hosted runner config). - Trigger: `push` (main/master/update) + `pull_request`. - Gate: `npm run check` (vitest smoke + eslint phase0 scope). If multiple workflows exist, run: ```bash bash scripts/dev/ci-ensure-one-workflow.sh git commit -m "ci: ensure single workflow" git push ``` Troubleshooting: - Failure: `package.json not found` → manual checkout couldn't determine ref; ensure repo is public or set a read token as secret env `GIT_READ_URL` and replace the clone URL accordingly.