Releasing
Releases are fully automated on v* tag push via
.github/workflows/release.yml.
Pipeline
- Validate - tidy, fmt, vet, golangci-lint, govulncheck, race tests, build, Helm lint, chart/tag version match, REUSE
- Changelog - git-cliff from Conventional Commits (
cliff.toml) - Image - native multi-arch build (no QEMU):
linux/amd64onubuntu-24.04linux/arm64onubuntu-24.04-arm- Trivy scan of each digest (
HIGH/CRITICAL, ignore unfixed) before merge - push-by-digest → merge manifest list on GHCR
- BuildKit SBOM + provenance
- Sigstore keyless Cosign signature (legacy
sha256-*.sigtags; Cosign v3 defaults break Artifact Hub signature detection) - GitHub Artifact Attestation (SLSA provenance, pushed to GHCR)
- Helm - package chart, push to
oci://ghcr.io/<owner>/charts, Cosign-sign the chart (Artifact Hub Signed badge), attest.tgz+ OCI chart, and pushartifacthub-repo.ymlas theartifacthub.ioOCI tag (Artifact Hub ownership / verified publisher) - GitHub Release - cliff notes + verify commands; attaches chart
.tgzplus the Sigstore attestation bundle as.sigstore.jsonand.intoto.jsonl(OpenSSF Scorecard Signed-Releases looks at those release-asset extensions)
Prerelease tags containing - (e.g. v0.2.0-rc.1) skip latest and major tags.
Before tagging
-
Bump chart versions to the release version (no
vprefix): -
Prefer Conventional Commits on
mainso git-cliff can group release notes (feat:,fix:,docs:, …). -
Preview notes locally (optional):
-
Commit with DCO sign-off (
git commit -s), then tag and push:
The release job uses the GitHub production environment. Create it under repository Settings → Environments if it does not exist yet (optional protection rules / reviewers).
Install a release
Verify signatures and attestations
Attestations appear under github.com/roberteggl/github-deployment-bridge/attestations.
Each GitHub Release also attaches the Helm chart Sigstore bundle next to the
.tgz (same attestation, two Scorecard-recognized filenames):
github-deployment-bridge-<version>.tgz.sigstore.jsongithub-deployment-bridge-<version>.tgz.intoto.jsonl
Prefer gh attestation verify against the chart (or Cosign against the image /
chart OCI refs). The release-side copies exist so OpenSSF Scorecard
Signed-Releases
can see signature/provenance assets; Scorecard does not yet consume the GitHub
Attestations API.
Cosign v3 defaults to the new Sigstore bundle format stored via the OCI
referrers API. Artifact Hub still indexes the legacy sha256-<digest>.sig tag
layout, so the release workflow signs with --new-bundle-format=false --use-signing-config=false.
Artifact Hub
Package page: artifacthub.io/packages/helm/github-deployment-bridge/github-deployment-bridge.
The OCI Helm chart can be listed on Artifact Hub.
Each release pushes repository metadata from
artifacthub-repo.yml to:
One-time setup
- Sign in to Artifact Hub and add a Helm repository with URL
oci://ghcr.io/roberteggl/charts/github-deployment-bridge(repository ID8a8ee5d5-8afa-41fc-9a95-5d51e6ccd952is already set inartifacthub-repo.yml). - Push the metadata (each release does this automatically), or manually / via Actions → Artifact Hub metadata → Run workflow:
Ownership claim uses the owners entry (Robert Eggl /
[email protected]) and is processed immediately once the metadata is visible.