6.1 KiB
6.1 KiB
| name | description |
|---|---|
| gitea-fix-ci | Use when a user asks to debug or fix failing Gitea Actions, Gitea PR checks, or CI workflow runs for a Gitea-hosted repository. |
Gitea Fix CI
Overview
Diagnose failing Gitea Actions from the pull request or workflow run, extract the smallest useful failure context, then propose a fix plan before changing code. Core principle: CI logs are evidence; do not guess from the red status alone.
This is not a standalone executor. It guides use of tea, local git, and the
Gitea API from the current workspace.
When to Use
- A Gitea-hosted repository has failing Gitea Actions or PR checks
- The user asks to inspect a failed workflow run, job, or CI status
- The user asks to fix CI after a push, branch update, or pull request update
- Local tests pass but remote Gitea Actions fail
When Not to Use
- The repository is not hosted on Gitea or Forgejo-compatible infrastructure
- The failure belongs to an external CI provider and only links out from Gitea
- The user only wants a local test or lint run
- Credentials, tokens, or network access are unavailable and the user has not provided the failing log text
Inputs
- Repository path, defaulting to the current workspace
- Gitea base URL and repository owner/name, from
git remote -vwhen possible - Pull request number, branch, commit SHA, or workflow run ID
- Authentication method:
tealogin profile,GITEA_TOKENfor API requests, or an existing git credential for the Gitea web fallback - Any pasted CI log if remote access is unavailable
Procedure
-
Baseline local state
- Record
git status --short, current branch, and latest commit SHA. - Identify the Gitea remote URL and owner/repo.
- Do not modify files while gathering CI evidence.
- Record
-
Verify Gitea access
- Prefer
teaif it is installed and authenticated:tea login listtea actions runs list --status failure --branch <branch>tea actions runs view <run-id>tea actions runs logs <run-id> --job <job-id>tea pulls view <pr>
- If
teais unavailable or lacks an Actions command for the installed version, use the Gitea API directly. - Check
/api/v1/versionand/swagger.v1.jsonwhen API behavior is unclear. Gitea 1.21 exposes Actions pages but not workflow run/job/log API endpoints. - Never print tokens. Pass API tokens through environment variables.
- Prefer
-
Find failing workflow runs
- For a known run ID, fetch that run directly.
- Otherwise list recent workflow runs filtered by branch, event, status, or commit SHA.
- API patterns:
GET /api/v1/repos/<owner>/<repo>/actions/runsGET /api/v1/repos/<owner>/<repo>/actions/runs/<run>GET /api/v1/repos/<owner>/<repo>/actions/runs/<run>/jobs
- Web fallback for older Gitea:
GET /<owner>/<repo>/actions- Parse
/<owner>/<repo>/actions/runs/<run>links and status labels.
- Treat
failure,cancelled, and missing required checks differently. Cancelled jobs may require rerun or queue investigation rather than code changes.
-
Fetch job logs
- For each failed job, download the job logs:
GET /api/v1/repos/<owner>/<repo>/actions/jobs/<job_id>/logs
- On Gitea 1.21 web fallback, download logs by UI job index:
GET /<owner>/<repo>/actions/runs/<run>/jobs/<job-index>/logs- Start with job index
0; if multiple jobs exist, inspect the run page or downloaded logs to map the failing job.
- Save large logs to a temporary file outside tracked source paths.
- Extract the first actionable error block, surrounding command, job name, workflow name, run URL, branch, and SHA.
- If logs are missing, report that explicitly instead of inventing causes.
- For each failed job, download the job logs:
-
Classify the failure
- Code/test failure: failing assertion, compile error, lint error, type error
- Environment failure: missing secret, runner image, dependency install, network, cache, permission, or service startup
- Workflow failure: invalid YAML, unsupported syntax, wrong trigger, bad path, wrong branch/ref assumption
- Infrastructure failure: offline runner, stuck queue, cancelled run, timeout
-
Create a fix plan
- Summarize the failure evidence with exact job/run identifiers.
- Propose the smallest code or workflow change that matches the evidence.
- Include local verification commands and the remote recheck path.
- Do not implement before the user approves the fix plan.
-
Implement after approval
- Apply only the approved fix.
- Run the local command that most closely reproduces the failed job.
- If the failure is workflow-only, validate the workflow file syntax and any referenced paths or scripts.
-
Recheck
- Tell the user what must be pushed or rerun in Gitea.
- If permitted, use the Gitea API to inspect the rerun status.
- Final output must distinguish local verification from remote CI status.
Output Contract
Target:repo, branch/SHA, PR or run IDFailed CI:workflow, job, status, run URL or API pathEvidence:concise log snippet and classificationPlan:proposed fix, local verification, remote recheckChanges:files changed after approvalResult:local checks run and remaining remote status
Success Criteria
- Failure analysis is based on Gitea Actions run/job data or pasted logs
- The fix plan names the exact workflow run or job it addresses
- No code or workflow edits happen before plan approval
- Verification distinguishes local commands from remote Gitea Actions results
- Tokens and private log content are not echoed unnecessarily
Failure Handling
- If authentication fails, ask the user to authenticate
teaor provide a token through the environment; do not request secrets in chat - If the Gitea version lacks Actions API endpoints, ask for the relevant log text or a browser-copied job log
- If an external CI provider owns the failing check, report the external URL and stop at evidence collection
- If the failure is infrastructure-only, recommend rerun/runner investigation instead of editing code