Skip to content

perf(ci): replace tag rebuild with image retag#244

Merged
fernando-villalba merged 1 commit intomainfrom
perf/optimize-tag-release-workflow
Feb 17, 2026
Merged

perf(ci): replace tag rebuild with image retag#244
fernando-villalba merged 1 commit intomainfrom
perf/optimize-tag-release-workflow

Conversation

@fernando-villalba
Copy link
Collaborator

The tag workflow previously re-ran the entire build-and-release pipeline (test all modules, rebuild container, scan, push), taking ~15 minutes. This was redundant because the main workflow already builds, scans, and pushes the image with a SHA tag on every merge.

The new tag release flow:

  1. Verify the tagged commit exists on main (reject non-main tags)
  2. Verify the main workflow passed for that commit (reject broken commits)
  3. Retag the existing SHA image with the version tag using docker buildx imagetools create (server-side, no pull/push)
  4. Create a GitHub release with auto-generated notes
  • Rewrite tags.yaml to retag instead of rebuild (~15s vs ~15min)
  • Remove unused create-release input from build-and-release.yaml
  • Simplify push step in build-and-release.yaml (only main calls it)
  • Drop security-events permission from tags.yaml (no Grype scan)
  • Fix legacy LABEL format warning in Dockerfile

This ensures tagged releases are always from main, always tested, and produced in seconds instead of minutes.

The tag workflow previously re-ran the entire build-and-release
pipeline (test all modules, rebuild container, scan, push), taking
~15 minutes. This was redundant because the main workflow already
builds, scans, and pushes the image with a SHA tag on every merge.

The new tag release flow:
1. Verify the tagged commit exists on main (reject non-main tags)
2. Verify the main workflow passed for that commit (reject broken
   commits)
3. Retag the existing SHA image with the version tag using
   docker buildx imagetools create (server-side, no pull/push)
4. Create a GitHub release with auto-generated notes

- Rewrite tags.yaml to retag instead of rebuild (~15s vs ~15min)
- Remove unused create-release input from build-and-release.yaml
- Simplify push step in build-and-release.yaml (only main calls it)
- Drop security-events permission from tags.yaml (no Grype scan)
- Fix legacy LABEL format warning in Dockerfile

This ensures tagged releases are always from main, always tested,
and produced in seconds instead of minutes.
@fernando-villalba fernando-villalba merged commit 5f05441 into main Feb 17, 2026
4 checks passed
@fernando-villalba fernando-villalba deleted the perf/optimize-tag-release-workflow branch February 17, 2026 13:56
@github-actions
Copy link

🔬 Go Test Coverage Report

Summary

Coverage Type Result
Threshold 0%
Previous Test Coverage 0.0%
New Test Coverage 0.0%

Status

✅ PASS

Detail

Show New Coverage
total:	(statements)	0.0%

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

Comments