Skip to content

fix: sign and publish releases the way gitops-reverser does - #39

Merged
sunib merged 2 commits into
feat/configurable-login-identityfrom
ci/publish-chart-artifacthub
Oct 5, 2026
Merged

sunib merged 2 commits into
feat/configurable-login-identityfrom
ci/publish-chart-artifacthub

Conversation

@sunib

@sunib sunib commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Stacked on #37; retarget to main once that merges.

Why the 0.1.0 release failed

publish the Helm chart pushed ghcr.io/configbutler/charts/krm-foyer:0.1.0, then
actions/attest-build-provenance (push-to-registry: true) failed with
No credentials found for registry ghcr.io: helm had logged in inside the CI container,
and the attestation runs on the runner, which had no login.

What changes: the release pipeline follows gitops-reverser's

  • CI before release-please, so a red commit never gets a release.
  • Draft releases. The repository has immutable releases switched on, so a published
    release accepts no assets. release-please creates a draft (draft: true), the publish
    jobs attach to it, publish-release publishes it last, and release-please-pr opens
    the next release PR against the published release.
  • Image: cosign keyless signature, SLSA provenance and SPDX SBOM attestations; the SBOM
    goes on the release with its .sigstore.json and .intoto.jsonl (Scorecard's
    Signed-Releases check). Release notes show how to install and verify.
  • Chart: signed with cosign instead of attested, as gitops-reverser does, which also
    removes the step 0.1.0 failed on. Each tool logs in for itself.
  • Artifact Hub: charts/artifacthub-repo.yml pushed with oras under the
    artifacthub.io tag. No repositoryID yet; it comes from the Artifact Hub control panel.
  • CI image: cosign v3.1.3 and oras 1.3.4 in the ci stage, each checked against its
    release's checksum file; the CI tool check runs both.

Deliberate differences from gitops-reverser: the image is built in the release job (amd64
only, and krm-foyer's CI does not push), and each chart step docker-runs the CI image,
which is a workflow artifact rather than a registry image, so container: is not available.

Verified

  • task verify passes; the ci stage builds with cosign v3.1.3 and oras 1.3.4.
  • The checksum check accepts the real archive and rejects a tampered one and a missing entry.
  • The oras push ran against a local registry:2; the manifest has Artifact Hub's config
    and layer media types.
  • The publish jobs themselves only run on a release.

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You'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.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 2b0f335a-b062-4537-8774-1518517f7be5
📥 Commits

Reviewing files that changed from the base of the PR and between b9b13ad and 41ba9a4.

📒 Files selected for processing (6)
  • .devcontainer/Dockerfile
  • .github/workflows/ci.yml
  • .github/workflows/release.yml
  • charts/artifacthub-repo.yml
  • docs/roadmap.md
  • release-please-config.json
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@sunib sunib changed the title fix: attest the published Helm chart and list it on Artifact Hub fix: sign and publish releases the way gitops-reverser does Oct 5, 2026
sunib and others added 2 commits October 5, 2026 16:12
The 0.1.0 release pushed the chart but failed at its provenance attestation:
"No credentials found for registry ghcr.io". helm logged in inside the CI
container, while the attestation is pushed from the runner, which had no
login. The chart job now logs in on the runner too, as the image job does.

As gitops-reverser does, the job also pushes charts/artifacthub-repo.yml
under the chart repository's artifacthub.io tag with oras, which is
added to the ci stage of the devcontainer image.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Align the release pipeline with gitops-reverser's, where it was tuned:

- CI runs before release-please, so a red commit never gets a release.
- Releases are drafts until every asset is attached, then publish-release
  publishes them; the repository has immutable releases switched on, so a
  published release accepts no assets. release-please-pr opens the next
  release pull request against the published release.
- The image is signed with cosign, attested (provenance and SPDX SBOM),
  and the SBOM goes on the release with its signature and provenance.
- The chart is signed with cosign instead of attested, which also removes
  the attestation step the 0.1.0 release failed on. cosign comes from the
  CI image, beside oras.
- The release notes show how to install and verify.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sunib
sunib force-pushed the ci/publish-chart-artifacthub branch from d7036cb to 41ba9a4 Compare October 5, 2026 16:12
@sunib
sunib added this pull request to stack #38 October 5, 2026 17:08
@sunib
sunib merged commit 56f24bd into main Oct 5, 2026
11 checks passed
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