ci(drift): run the git-touching tests against a git version matrix on the cron #525
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
Depends on
#526 Epic: madtea has no way to stay current with the git binary
sixfold-space/madtea
#524 git: pin the git output contract and declare a minimum git version
sixfold-space/madtea
Reference
sixfold-space/madtea#525
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?
Phase 2 of the git-currency work. See the epic. Do this after the contract is pinned.
What happens
CI runs in one container image, pinned by digest:
docker.io/golang:1.26-trixie@sha256:771f3162...(.forgejo/workflows/ci.yml:107and:213). So every test runs against exactly one git version, and the digest pin freezes that version until someone bumps the image.git --versiondoes run, atci.yml:125and:219, but only as a log line. Nothing asserts on it.Users run a different git: Homebrew, Xcode, Alpine, RHEL, and Windows all ship their own. CI cannot see a git change, by construction.
The forge side already has the answer to this.
.forgejo/workflows/drift.ymlexists for "regressions that appear WITHOUT the code changing". It diffs the endpoints madtea calls against the vendored specs indocs/api-specs/, and it smoke-tests a live Forgejo. Git has no counterpart.Fix
drift.ymlthat runs the git-touching tests against several git versions: the documented minimum floor, the distro build, and the latest upstream release.drift.ymlandci.ymlare both tuned to avoid container starts, and this check answers a question that changes while the tree does not.Depends on
The contract pin first. A matrix over unversioned
--porcelainoutput tests a contract that is not yet stated.Acceptance