Skip to content

ci: add tag-driven release workflow#3

Open
fheikens wants to merge 1 commit intomainfrom
ci/release-workflow
Open

ci: add tag-driven release workflow#3
fheikens wants to merge 1 commit intomainfrom
ci/release-workflow

Conversation

@fheikens
Copy link
Copy Markdown
Contributor

Summary

Adds a complete release workflow (.github/workflows/release.yml) triggered on v* tag pushes. Implements all six gates from the Elevarq release protocol.

Release pipeline

v* tag push
  → validate (tag ↔ VERSION file, prepare-release.sh --check-only)
  → test (integration, resilience, startup failure — against built image)
  → lint (hadolint, helm lint)
  → security-scan (Trivy fs + config + image, gitleaks)
  → publish (GHCR push, cosign sign, SBOM generation)
  → release (GitHub Release with SBOM attachment)

Gates enforced

Gate Tool Blocks release?
A. Correctness prepare-release.sh, integration tests Yes
B. Lint hadolint, helm lint Yes
C. Security Trivy (CRITICAL/HIGH), gitleaks Yes
D. Supply chain Pinned actions, GHCR push Yes
E. Artifact cosign keyless signing, SBOM (SPDX) Yes
F. Hygiene CHANGELOG extraction, release notes Yes

How to release

# 1. Update VERSION, CHANGELOG.md, Chart.yaml
# 2. Commit and push to main
# 3. Tag and push
git tag -a v0.3.0 -m "Release v0.3.0"
git push origin v0.3.0
# → workflow runs automatically

New capabilities

  • Container images published to ghcr.io/elevarq/pgagroal
  • Images signed with cosign (keyless, GitHub OIDC)
  • SBOM (SPDX JSON) attached to every release
  • Consumers can verify: cosign verify ghcr.io/elevarq/pgagroal:0.3.0 --certificate-identity-regexp='github.com/Elevarq/' --certificate-oidc-issuer='https://token.actions.githubusercontent.com'

🤖 Generated with Claude Code

Adds .github/workflows/release.yml triggered on v* tag pushes.

Release gates enforced:
  A. Correctness — version consistency (prepare-release.sh), integration
     tests, resilience tests run against the built container image
  B. Lint — hadolint (Dockerfile), helm lint (chart)
  C. Security — Trivy (fs + config + image), gitleaks; CRITICAL/HIGH
     findings block the release
  D. Supply chain — pinned actions, GHCR push with docker/metadata-action
  E. Artifact — cosign keyless signing (GitHub OIDC), SBOM generation
     (syft via anchore/sbom-action, SPDX JSON)
  F. Release hygiene — changelog extraction, GitHub Release with SBOM
     attachment and cosign verification instructions

Image published to ghcr.io/elevarq/pgagroal with semver tags.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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