Repository navigation
ci: build, test and stage the release image by digest - #690
Open
SushaanthSrinivasan wants to merge 1 commit into
Open
SushaanthSrinivasan wants to merge 1 commit into
SushaanthSrinivasan wants to merge 1 commit into
Conversation
Extend the Release workflow: after the version check, build the image once for linux/amd64 and linux/arm64, push it to the private staging repo, run the integration tests on that exact digest, then add the release tag to that same digest. Nothing is rebuilt, copied or published to ECR Public. A "practice run" checkbox, ticked by default, uses the version already on main and tags rehearsal-<run id> instead, so the whole flow can be tried without a version bump. The version check skips its git tag and ECR Public checks in a practice run. The build checks what it pushed before anything else uses it: the index digest matches its manifest bytes, it has exactly the two platforms, both binaries carry the version, and the digest has no tag of the other mode. Build labels (commit, run id and attempt, mode) give every run its own digest. AWS credentials reach steps only through step outputs, never the job environment.
SushaanthSrinivasan
had a problem deploying
to
code-review
October 16, 2026 18:24 — with
GitHub Actions
Error
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## ci/release-workflow #690 +/- ##
====================================================
Coverage 61.62% 61.62%
====================================================
Files 11 11
Lines 740 740
====================================================
Hits 456 456
Misses 265 265
Partials 19 19 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
SushaanthSrinivasan
marked this pull request as ready for review
October 16, 2026 18:48
SushaanthSrinivasan
requested a deployment
to
code-review
October 16, 2026 18:48 — with
GitHub Actions
Waiting
sylvie7788
reviewed
Oct 19, 2026
| integ: | ||
| name: Integration tests | ||
| needs: [build, check-digest] | ||
| uses: $/.github/workflows/integ.yml |
Contributor
There was a problem hiding this comment.
reusable workflow should start with ./ instead of $/.? double check
Author
There was a problem hiding this comment.
its the new self repository syntax, github recommends $/ over ./ for same repo actions and reusable workflows
https://github.blog/changelog/2026-07-30-reference-same-repository-actions-with-self-repository-syntax/
6 of 10 tasks
This branch is waiting to be deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Why is this change being made?
What is changing?
release.ymlgets four more jobs, aftervalidate-version:linux/amd64+linux/arm64(arm64 under QEMU) and pushes it to the private staging repo as<version>-testing. Then it checks what it pushed: the digest matches the manifest bytes, the index has exactly those two platforms, and both binaries carry the version (go version -mon a local copy written by the same build).integ.ymlwith that digest.<version>tag to that same digest in the staging repo. Nothing is rebuilt or copied.practicecheckbox, ticked by default. A practice run uses the version already onmain, tagsrehearsal-<run id>-testing/rehearsal-<run id>, and those images are deleted after 14 days. The run name says(practice). The version check skips its git tag and ECR Public checks in a practice run..github/scripts/:release-tags.sh(tags, build args, labels),staging-image.sh(the staging repo steps), practice mode invalidate-release-version.sh. New bats tests with fakeaws,dockerandgo. Thego version -moutput, the AWS CLI error format and the public 3.1.4 index used by the tests are recorded from real output.docker/setup-qemu-actionv4.4.0,docker/setup-buildx-actionv4.4.1, buildx v0.38.0, and the BuildKit and binfmt images by digest.Accepted risks
release.yml. Nothing is public at this stage.<version>-testingtag. A retry overwrites it, so at most one leftover per version.Re-run buttons
-testingtag.Before merge
integ.ymlneeds; this PR passes them by name) and on ci: add a release version check and pin integ tests to an image digest #689's final state.rehearsal-*images expire; staged releases never do) and thestagingenvironment's settings are in place.Related Links
Testing
How was this tested?
release.ymlis clean.release.ymlonly runs frommain, so it's tried after merge with practice runs (ticked box), then checked by hand: tags, platforms, binary versions, labels, re-running stage, and two runs queuing one after the other.When testing locally, provide testing artifact(s):
Reviewee Checklist
Update the checklist after submitting the PR
If not, why:
If not, why:
If not, why: waiting on CI for this PR
If not, why: no Go code changes
If not, why: the release workflow runs only from
main; tried with practice runs after mergeIf not, why:
If not, why:
If not, why:
If not, why: the release steps change once publishing is added
If not, why: none: the new jobs only run when the Release workflow is started by hand
Reviewer Checklist
All reviewers please ensure the following are true before reviewing:
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.