Skip to content

fix(ci): promote all image tags after attestation for GHCR UI#75

Merged
nayrosk merged 1 commit into
developfrom
fix/ci-ghcr-install-hint-74
Apr 23, 2026
Merged

fix(ci): promote all image tags after attestation for GHCR UI#75
nayrosk merged 1 commit into
developfrom
fix/ci-ghcr-install-hint-74

Conversation

@nayrosk
Copy link
Copy Markdown
Member

@nayrosk nayrosk commented Apr 23, 2026

Summary

  • Root cause: GHCR UI sorts package versions by push timestamp. When actions/attest@v4 pushes the attestation referrer manifest after the image, it becomes most-recent and displaces real tags (latest, semver) in the UI, showing only the sha256 digest link.
  • Fix: Loop over all tags from steps.meta.outputs.tags after attestation completes, using docker buildx imagetools create to re-touch each real tag and bump their timestamp above the attestation referrer.
  • Scope: Single file .github/workflows/release.yml — release job only, no code changes.

Testing

  • Verify CI/CD: actionlint validates workflow syntax (no new warnings)
  • Verify CI/CD: Release job runs without docker push regression (all images pushed to GHCR successfully)
  • Post-merge verification: On next release tag, verify GHCR UI displays latest and semver tags (e.g., v0.4.2, 0.4) as primary options in package versions dropdown, NOT sha256 digest link as first option

Closes #74

Summary by CodeRabbit

  • Chores
    • Enhanced the Docker image release pipeline with improved tag handling and stricter deployment checks.

GHCR sorts package versions by most-recent push timestamp. When
actions/attest@v4 pushes the attestation referrer manifest after the
image push, it becomes the most-recent artifact and displaces real
tags (latest, x.y.z, x.y) in the UI, showing only the sha256 digest
link instead.

Remediation: loop over all tags from steps.meta.outputs.tags (using
docker buildx imagetools create) after attestation completes. This
re-touches each real tag, bumping their timestamp above the
attestation referrer, so GHCR UI surfaces them first.

Refs: #74
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 23, 2026

📝 Walkthrough

Walkthrough

The release workflow is updated to generalize tag promotion post-attestation. Instead of conditionally re-tagging only :latest, the workflow now reads all tags from docker/metadata-action output and applies each via docker buildx imagetools create against the attested image digest, with added shell safety (set -euo pipefail).

Changes

Cohort / File(s) Summary
Release workflow tag promotion
.github/workflows/release.yml
Replaces single-condition :latest re-tag with loop-based promotion of all semantic tags (latest, semver, major.minor) via docker buildx imagetools create to correct GHCR package page install hint from digest-based attestation tag to human-readable tag.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 Tags now dance in orderly rows,
No more sha256 in our install prose!
Imagetools create, a loop so divine,
Makes GHCR hints read perfectly fine! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'fix(ci): promote all image tags after attestation for GHCR UI' directly and clearly summarizes the main change: promoting all image tags post-attestation to fix GHCR UI display.
Linked Issues check ✅ Passed The PR implements all key requirements from issue #74: it loops over all tags from docker/metadata-action output, re-PUTs each via docker buildx imagetools create to bump their timestamps above the attestation manifest, preserves attestation publication, and includes stricter shell behavior.
Out of Scope Changes check ✅ Passed All changes are scoped to .github/workflows/release.yml release job as specified in issue #74; no unrelated modifications or code changes are present.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/ci-ghcr-install-hint-74

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@nayrosk nayrosk self-assigned this Apr 23, 2026
@nayrosk nayrosk merged commit 59cb161 into develop Apr 23, 2026
9 checks passed
@nayrosk nayrosk deleted the fix/ci-ghcr-install-hint-74 branch April 23, 2026 07:00
@nayrosk nayrosk mentioned this pull request May 12, 2026
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant