ci: the forgejo-smoke job has never run #542
Labels
No labels
breaking
bug
documentation
enhancement
epic
good first issue
help wanted
refactoring
resolution/duplicate
resolution/invalid
resolution/wontfix
security
severity/critical
severity/high
severity/low
severity/medium
status/abandoned
status/blocked
status/needs-decision
status/needs-info
status/needs-verification
testing
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
#544 Epic: madtea's external contracts are asserted, not verified
sixfold-space/madtea
Reference
sixfold-space/madtea#542
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?
drift.yml'sforgejo-smokejob spins up Forgejo in a sidecar container, provisions an admin and token, and runs roughly 60 CLI commands end to end. It is the only check that exercises madtea against a live forge rather than against a vendored spec.It is gated on:
This repository defines no Actions variables at all, so the first clause is false on every event. The job is skipped at evaluation time and never queued. As far as I can tell it has never executed here.
Why it matters
Every other forge check compares madtea against a static artifact: the vendored OpenAPI specs in
docs/api-specs/.forgejo-smokeis the only one that answers "does this endpoint actually work", as opposed to "is this endpoint documented". Its own comment makes that distinction: it catches "endpoint that's documented but doesn't actually work on Forgejo".That is a real and distinct class of failure, and nothing currently covers it.
It also compounds #538: the vendored Gitea spec turned out to be a minor version stale with 8 missing paths, and the live check that might have surfaced that class of drift was switched off.
Note on the gate itself
The gate is deliberate and the reasoning is sound. The job needs a host Docker socket to provision the first admin user, which a public runner must not provide, and the
!= pull_requestclause keeps a socket-privileged job unreachable from fork PRs. None of that should change.The question is only whether the variable gets set on an instance whose runner can support it, or whether the job should be removed rather than sit permanently dead.
Ask
Decide one of:
RUN_FORGEJO_SMOKEon an instance whose runner exposes the socket, and confirm the job actually runs and passes.A job that is permanently skipped is worse than no job, because the workflow reads as though live verification exists.
Acceptance
Related: #538 (vendored specs are not validated against a live install), #540 (a failing scheduled run notifies nobody).