Repository navigation
ci: restore annotated tags so Guix tag builds use the tag's version - #7997
PastaPastaPasta wants to merge 1 commit into
Conversation
On tag pushes actions/checkout@v4 fetches the triggering tag again as `+<commit>:refs/tags/<tag>`, which replaces the annotated tag with a lightweight one. `git describe` ignores lightweight tags, so the v23.1.10 Guix build (v23.1.x still pins checkout@v4) was named 23.1.9-15-g703b2a08de17 and none of its archive hashes matched the release attestations. checkout@v6 no longer rewrites the tag. Re-fetch the tags with --force after checkout to restore the annotated tag whatever the checkout version does, and fail the build if the version Guix would use differs from a v* tag. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 4 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
✅ Final review complete — no blockers (commit a16057f) · triage: low |
thepastaclaw
left a comment
There was a problem hiding this comment.
Final validation — Phase 1 + Phase 2
The tag restoration runs in the correct checkout before version selection, and the version guard checks the same helper Guix uses; no actionable defects were found. The ShellCheck nitpick is a false positive because the parameterless function is correctly invoked without arguments. Validation was static only: current lint and formatting checks pass, source-build jobs remain pending, and Guix jobs were skipped, so this PR's CI does not independently exercise the tag-push path; the earlier PR-title policy failure has been superseded by a passing check.
Review provenance
Source: reviewer 1: glm-5.3-flash (agent: phase1-reviewer, role: general); reviewer 2: gpt-6.1-sol (agent: phase2-reviewer, role: general); reviewer 3: gpt-6.1-sol (agent: phase2-reviewer, role: dash-core-commit-history); final verifier: gpt-6.1-sol (agent: sol-verifier, role: final-verifier)
- Triage:
lowbygpt-6.1-sol(effort low) — The change adds two small, well-contained CI steps to restore annotated tags and verify the build version, with straightforward behavior and no critical-surface changes. - Phase 1 reviewers:
glm-5.3-flash— general (completed, effort high); agentphase1-reviewer - Phase 1 model:
glm-5.3-flash— zai quota: 5h 97% left, weekly 78% left; passed overgemini-3.8-flash-high(antigravity quota lookup failed) - Fresh verifier:
gpt-6.1-sol— final-verifier; agentsol-verifier - Phase 2 reviewers:
gpt-6.1-sol— general (completed, effort medium); agentphase2-reviewer,gpt-6.1-sol— dash-core-commit-history (completed, effort medium); agentphase2-reviewer
|
Closing this. The tag rewrite only happens with 🤖 Posted autonomously by Claude on behalf of pasta. |
Issue being fixed or feature implemented
The Guix CI build for the
v23.1.10tag (run 41110158089) was named23.1.9-15-g703b2a08de17instead of23.1.10, so none of its archive hashes matched the release attestations in guix.sigs. Onlywin64-setup-unsigned.exematched.The checkout log shows why. On a tag push,
actions/checkoutv4 first fetches every tag. It then fetches the triggering tag again as+703b2a08…:refs/tags/v23.1.10, which replaces the signed annotated tag with a lightweight one on the same commit.git describe(used bygit_head_versionincontrib/guix/libexec/prelude.bash) skips lightweight tags, so it fell back tov23.1.9.actions/checkoutv6, which develop and v24.0.x use, no longer rewrites the tag.v23.1.xstill pins v4, so its tag builds are versioned wrongly.What was done?
In the
buildjob ofguix-build.yml:git fetch --force --tags originafter checkout, so the real annotated tag replaces the lightweight one, whichever checkout version is pinned.v*tag pushes): fails the job with an error ifgit_head_version(the version Guix will build) is not exactly the pushed tag. A wrong version would then fail the build instead of producing artifacts that can't match guix.sigs.On develop this is a guard against checkout regressions. On v23.1.x it is the actual fix. Please backport to v23.1.x, where checkout v4 makes it needed.
How Has This Been Tested?
v23.1.10tag. After checkout the tag was acommit(lightweight) andgit describewas notv23.1.10. Aftergit fetch --force --tags originit was atagagain and the new check printedBuilding version 23.1.10.ubuntu-24.04-armrunners, pushed a throwaway annotated tag to a fork, with a workflow running these same steps afteractions/checkoutv4 and v6 (samepath/fetch-depth: 0/persist-credentials: falseinputs):type=commit describe=v23.1.8-2706-g79281092d3c5. After the fixtype=tag describe=v99.0.0-tagtest.1, and the check passed.zizmor(test/lint/lint-github-actions.pyconfig) reports no findings.Breaking Changes
None. A tag build now fails early if its version doesn't match the tag.
Checklist:
🤖 Generated with Claude Code