53bc4b68a6
Remove tag triggers and duplicate release job from build-and-push.yaml. The release-unified.yaml workflow handles the full release flow (Docker build, Helm chart, GitHub release) when triggered via workflow_dispatch. Previously, release-unified.yaml pushing a commit to main AND a v* tag would trigger build-and-push.yaml up to twice, causing multiple Docker builds to race for the :latest tag. The stale GHA layer cache in the racing build could overwrite :latest with an image missing new tools (e.g., crush, opencode). Changes: - Remove tags: ['v*'] trigger (release-unified handles tag-based releases) - Remove duplicate release job (Helm chart + GitHub release) - Remove semver tag patterns from metadata (not needed without tag trigger) - Skip builds from github-actions[bot] to avoid racing with release commits Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
CI/CD Pipeline Guide
🚀 Simplified Pipeline - Only 3 Workflows!
1️⃣ For Releases → Unified Release
Use this for all version releases:
- Go to Actions → Unified Release
- Click "Run workflow"
- Either:
- Enter specific version (e.g.,
0.2.1), OR - Choose release type (patch/minor/major) for auto-increment
- Enter specific version (e.g.,
- Click "Run workflow"
This single workflow does EVERYTHING:
- ✅ Updates chart version
- ✅ Creates git tag
- ✅ Builds Docker image with all proper tags
- ✅ Publishes Helm chart to GHCR
- ✅ Creates GitHub Release with changelog
- ✅ No more
[skip ci]blocking builds!
2️⃣ For Quick Fixes → Quick Fix Build
Use this for emergency fixes without version changes:
- Go to Actions → Quick Fix Build
- Click "Run workflow"
- Enter tag (default:
latest) - Click "Run workflow"
Just builds and pushes Docker image - no version bumps, no releases.
3️⃣ Automatic CI → Build and Push
Runs automatically on:
- Pull requests (builds but doesn't push)
- Tags starting with
v*(builds and pushes) - Manual trigger available
Workflow Files
| Workflow | File | Purpose | When to Use |
|---|---|---|---|
| Unified Release | release-unified.yaml |
Full release process | New versions |
| Quick Fix Build | quick-fix.yaml |
Docker build only | Hotfixes |
| Build and Push | build-and-push.yaml |
CI/CD automation | PRs & tags |
Examples
Release a new version
# Via GitHub UI (Recommended):
# Go to Actions → Unified Release → Run workflow
# Via GitHub CLI:
gh workflow run release-unified.yaml -f version=0.2.1
# OR auto-increment:
gh workflow run release-unified.yaml -f release_type=patch
Push a quick fix
# Via GitHub UI:
# Go to Actions → Quick Fix Build → Run workflow
# Via GitHub CLI:
gh workflow run quick-fix.yaml -f tag=hotfix-1
Check workflow status
# List all recent runs
gh run list --limit 5
# Watch a specific workflow
gh run watch
Version Strategy
- Major (1.0.0): Breaking changes
- Minor (0.2.0): New features
- Patch (0.2.1): Bug fixes
What We Fixed
Before (Nightmare 😱)
- Auto-version-bump with
[skip ci]prevented Docker builds - 6+ disconnected workflows
- Manual tag deletion and re-pushing
- Version conflicts everywhere
After (Simple! 🎉)
- 3 total workflows (down from 6+)
- 1 button for complete releases
- No more
[skip ci]blocking builds - Clear separation of concerns