Commit graph

7 commits

Author SHA1 Message Date
Till Wegmueller
80a56a137a
fix: extract manifest digest correctly for attestation 2025-11-29 20:45:04 +01:00
Till Wegmueller
ececa59084
fix: use correct ARM64 runner label ubuntu-24.04-arm 2025-11-29 20:29:32 +01:00
Till Wegmueller
656bdb5531
fix: move attestation to multi-platform manifest creation 2025-11-29 17:36:35 +01:00
Till Wegmueller
609f39813f
feat: use native ARM64 runners with matrix strategy for faster builds 2025-11-29 17:21:07 +01:00
Till Wegmueller
7e7e672f65
fix(ci): use fixed prefix for SHA tags instead of branch name
The {{branch}} placeholder is empty for tag pushes, resulting in
invalid tags like '-f7184b4'. Changed to use 'sha-' prefix instead.

Tags will now be:
- ghcr.io/.../barycenter:0.2.0-alpha.3
- ghcr.io/.../barycenter:sha-f7184b4
2025-11-29 16:11:09 +01:00
Till Wegmueller
ea876be242
fix(ci): prevent invalid Docker tags for pre-release versions
Disable major and minor version tags for pre-release versions (alpha, beta, rc)
since semver pattern extraction doesn't work correctly with pre-release suffixes.

This fixes the error:
  ERROR: failed to build: invalid tag "ghcr.io/.../barycenter:-1171167"

Pre-release versions will now only get:
- Full version tag: v0.2.0-alpha.1
- SHA tag: main-<sha>

Stable releases will continue to get all tags:
- Full version: v1.0.0
- Major.minor: 1.0
- Major: 1
- SHA: main-<sha>

Also added missing id to build step for attestation.
2025-11-29 16:08:31 +01:00
Till Wegmueller
221406b1a2
ci: add automated release workflow with Docker image publishing
Add comprehensive release automation:

**GitHub Actions Release Workflow:**
- Triggers on version tags (v*.*.*)
- Builds multi-platform Docker images (amd64, arm64)
- Publishes to GitHub Container Registry (ghcr.io)
- Creates GitHub Releases with auto-generated changelogs
- Generates build provenance attestations for supply chain security
- Semantic versioning with tag variants (v1.0.0, 1.0, 1)

**cargo-release Configuration:**
- Automated version bumping in Cargo.toml
- Updates CHANGELOG.md with version and date
- Syncs Helm chart versions (Chart.yaml)
- Creates git tags and commits
- Pushes to remote automatically
- Enforces main branch releases

**Release Documentation:**
- RELEASE.md with complete release process guide
- CHANGELOG.md following Keep a Changelog format
- Updated README.md with deployment and release sections
- Instructions for patch, minor, and major releases
- Dry-run support for testing
- Hotfix and rollback procedures

**Usage:**
To create a release, simply run:
  cargo install cargo-release
  cargo release minor --execute

This will:
1. Bump version in all relevant files
2. Update changelog
3. Create git tag
4. Trigger Docker image build and publish
5. Create GitHub Release with notes

Docker images will be available at:
  ghcr.io/[owner]/barycenter:v1.0.0
  ghcr.io/[owner]/barycenter:1.0
  ghcr.io/[owner]/barycenter:1

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 15:49:52 +01:00