CI workflow: all runs failing or cancelling since repo creation #7
Labels
No labels
bug
in-progress
triage-approved
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
AuWoMe/Drift#7
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Symptom
The CI workflow
.forgejo/workflows/ci.ymlis failing or getting cancelled for every push tomain. The flow usesactions/checkout@v4andactions/setup-node@v4— i.e. GitHub-hosted action references — and there is no working Forgejo-native mirror available in this Forgejo instance.Evidence (Vikunja pilot card #4 / 2026-09-10 scan)
cancelledcancelledcancelledcancelledfailurefailurefailureAPI returns 7 runs total on this repo, all in
failureorcancelled. Job-step-logs endpoint/api/v1/repos/AuWoMe/Drift/actions/runs/<id>/jobsreturns 404 — opaque-failure shape documented indiagnose-forgejo-actions. Steps shipped zero log output.Attempted fixes (commits on
main)Mark already tried two remedies:
ec48a65d—fix: convert GitHub action URLs to Forgejo-native mirror(used fully-qualifiedhttps://data.forgejo.org/...URLs).2be36410—Revert: use original action short names (git.forgejo.org doesn't resolve)(reverted toactions/checkout@v4etc.).Runs after both commits still fail/cancel — the runner cannot resolve those JS actions at all.
Diagnosis
Pattern matches the
actions/checkout@v4/ third-party-action not cached failure mode fromdiagnose-forgejo-actions/SKILL.md:The jobs endpoint returns 404, so the underlying action-resolution failure can only be confirmed by expanding the "Set up job" step in the Actions web UI.
Proposed work
Rewrite
ci.ymlso alluses:references resolve via the locally cached mirror or move to plain shell steps / acontainer:-based runner that doesn't need to fetch external JS actions. Likely candidates:actions/setup-node@v4— preinstall Node 20 in acontainer:directive on the job (e.g.container: catthehacker/ubuntu:act-22.04).actions/checkout@v4with arun:step that doesapt-get install -y git && git clone ...(or pin checkout to a Forgejo-cached mirror tag).cache: 'npm'only aftersetup-noderesolves; otherwise rely onnpm ciwith no cache.Workflow file lives at
.forgejo/workflows/ci.yml(only branch:main).Acceptance criteria
mainproduces a Forgejo Actions run that ends insuccess(orcompletedwith at least one green step).npm ci,npm run check,npm run build) all reach the post-step container cleanly.GET /api/v1/repos/AuWoMe/Drift/actions/runs/<id>/jobs(i.e. the jobs endpoint stops 404-ing — a signal that log persistence works again on this Forgejo v13.0.4 instance).Source: Vikunja task #192 (forgejo-bridge project) — pilot card for the 2026-09-10 forgejo-ci-failures scan.
Automated runner (kilo-gsd-runner) could not launch on this issue. No code was changed.
Blocker: this repo has no pre-dispatch gate at
.gsd/gates/pre-dispatch.sh.The runner shells this gate unconditionally between its Plan and Implement phases.
A missing file returns exit 127, which is recorded as a gate FAILURE (not "no gate
configured") and routed to the mechanical bugfix agent, which then scaffolds a
bespoke gate and burns its retry budget. Launching into that is worse than stopping,
so the run was not started.
Every other precondition is green:
/home/b/Projects/Driftclean, HEAD2be3641onmainorigin/mainreferencing#7bug/triage-approvedFixed in passing: the repo had no
in-progresslabel defined, which would havemade the runner's claim step fail with a 422. It now exists (id 1182), so that will
not block the next attempt.
Operator remedy (
.gsd/is gitignored, operator-provisioned tooling state — thelauncher is not permitted to create it):
Canonical gate
md5=71f169a29925057bece85f07cfa3f933, already carried by ~22 siblingrepos. Once installed, re-dispatch via
hermes kanban unblock t_fce6af3a.Note on the CI work itself: the diagnosis in this issue (GitHub-hosted JS actions not
resolvable from this Forgejo instance) is untouched by this blocker and still stands
as the work to be done once the runner can launch.
kanban card
t_fce6af3a— blocked pending operator gate install.kanban launcher check 2026-09-15: gate preflight fails — Drift repo has no
.gsd/gates/pre-dispatch.sh(operator-only tooling state). Local issue and CI symptom are unchanged. kilo-gsd.py cannot fly until the operator installs the canonical gate (md5=71f169a29925057bece85f07cfa3f933, located at/home/b/Projects/infrastructure/.gsd/gates/pre-dispatch.sh). Operator one-liner:After install, kanban card t_1a39a080 will be unblocked and re-dispatched; this Forgejo issue will then get the actual CI rewrite (drop
actions/checkout@v4andactions/setup-node@v4, replace withcontainer: catthehacker/ubuntu:act-22.04+ plaingit clone/npm cisteps).npm run check#10Verification — workflow now passes end-to-end
Root cause was NOT the third-party action theory. Commit
710627d0(the container rewrite) actually did fix the originalactions/checkout@v4failure. New run #7032 (commit71c93905, fix for #8) failed onnpm run checkbecause the pushed commit deliberately shipped with a known TypeScript regression — the author's own commit message says verbatim:Fix shipped:
8bfee31"fix(#9): clear drizzle-orm schema overload errors blocking npm run check". Drops the seven dead*Sqlitedrizzle table declarations inshared/schema.ts(runtime SQLite uses rawCREATE TABLEinserver/db.ts#createSqliteTables, so they produced only TS errors). Also adjustsusers.emaildefault, normalizesinsertActionSchema.dueDatetoDate | null, fixesreq.params.idtype casts, extends the logger to accept a structured meta object, and narrows thedbtype so storage.ts's pg-typed table references resolve.Result:
8bfee31,index_in_repo=20) — status:success✅2026-09-17T18:13:21Z, stopped2026-09-17T18:15:30Z, duration 2 min 9 secIssue #7 acceptance criteria, current status
npm ci/npm run check/npm run buildend-to-endsuccesson the newest push tomain— verified against run #7043.successwith green steps — verified via the run summary (web UI) and the run'sstatusfield.GET /api/v1/repos/AuWoMe/Drift/actions/runs/<id>/jobsstill returns HTTP 404 — but this is NOT caused by the workflow. Spot-checked: the same 404 affects every run in this repo (7043, 7032, 6988, 6987, 6985, 6981, 6980, 6979, 6996, 2674, 1) and every run in every other repo on this Forgejo instance (e.g.Mark/org_moderuns 1–3 all 404 the same way). The run metadata API works, but/jobs,/logs,/artifacts, and/stepssub-resources all 404 repo-wide. The web UI loads the page but redirects to login for any…/jobs/0/attempt/1link.forgejo_actions_log_pathnot configured, the runner writing to a path that isn't being read back into the Forgejo log DB, or the Actions storage path not mounted. Needs an operator to investigate the instance config; it cannot be fixed by changes inside this repo.Closing the workflow side of this issue. The Jobs API 404 needs a separate operator ticket.