Skip to content

chore(release): promote v1.6.0-rc.4 -> v1.6.0 - #3425

Merged
myasnikovdaniil merged 4 commits into
mainfrom
release-1.6.0
Jul 22, 2026
Merged

chore(release): promote v1.6.0-rc.4 -> v1.6.0#3425
myasnikovdaniil merged 4 commits into
mainfrom
release-1.6.0

Conversation

@cozystack-ci

@cozystack-ci cozystack-ci Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Promotes v1.6.0-rc.4 to stable v1.6.0 — no rebuild. The tree pins the rc's images by digest. On merge, pull-requests-release.yaml creates the write-once v1.6.0 tag at the merge commit, retags those digests to v1.6.0 (+:latest when this is the newest stable), publishes the stable cozy-installer chart, and publishes the release — so the stable artifacts are bit-for-bit the rc that passed e2e. The full-e2e label forces the full suite on this PR. Do NOT squash-merge (decision B): the stable tag must attach to a real merge commit.

cozystack-ci Bot and others added 3 commits July 21, 2026 10:31
Signed-off-by: cozystack-ci[bot] <274107086+cozystack-ci[bot]@users.noreply.github.com>
Promoting this branch fails in two independent ways, both landing after
finalize has already created the write-once stable tag, published the
GitHub release and moved :latest.

chBackupClientImage had no producer and froze at v1.4.0-rc.2 while
.migrations.image advanced to v1.6.0-rc.4, leaving platform-migrations
pinned at two digests. promote-retag.sh copies every collected
<repo>@<digest> to <repo>:<stable>, so both compete for one destination
tag: the lower-sorting v1.4.0-rc.2 digest wins it and the second copy
trips the write-once guard, aborting the retag with five repositories
still untagged and the installer chart unpublished. Align it to the
digest this branch already carries for the migrations image. Both come
from the same tree, so the runner keeps the curl, jq and ca-certificates
the Altinity strategy Pod needs, and that Pod overrides the ENTRYPOINT
with its own command.

promote-rc.yaml on main now calls hack/promote-rewrite-tags.sh, which
does not exist here, so the dispatch would fail outright. Vendor it and
hack/lib/image-refs.sh verbatim from main (identical blobs). That also
fixes the rewrite's coverage: the old inline glob enumerated 155 files
and missed 10 rc-bearing ones, which is why the earlier promote left 11
references reading v1.6.0-rc.4. The shared enumeration covers all 168
and fails the promotion if any rc reference survives.

Both fixes are on main via #3405 and #3404; this carries them onto the
rc.4 staging tree so v1.6.0 ships the bytes rc.4 tested.

Assisted-By: Claude <noreply@anthropic.com>
Signed-off-by: Myasnikov Daniil <myasnikovdaniil2001@gmail.com>
Signed-off-by: cozystack-ci[bot] <274107086+cozystack-ci[bot]@users.noreply.github.com>
@cozystack-ci cozystack-ci Bot added release Releasing a new Cozystack version full-e2e Run the full E2E app suite (bypass TIA selection) labels Jul 22, 2026
@github-actions github-actions Bot added size/L This PR changes 100-499 lines, ignoring generated files area/release Issues or PRs related to release tooling (changelog, backport, release pipeline) kind/cleanup Categorizes issue or PR as related to cleanup of code, process, or technical debt labels Jul 22, 2026
Signed-off-by: myasnikovdaniil <60174387+myasnikovdaniil@users.noreply.github.com>
@github-actions github-actions Bot added size/M This PR changes 30-99 lines, ignoring generated files and removed size/L This PR changes 100-499 lines, ignoring generated files labels Jul 22, 2026
@myasnikovdaniil
myasnikovdaniil merged commit 764e304 into main Jul 22, 2026
15 checks passed
@myasnikovdaniil
myasnikovdaniil deleted the release-1.6.0 branch July 22, 2026 15:20
myasnikovdaniil added a commit that referenced this pull request Aug 3, 2026
Now that the required "E2E Tests" context is a commit status rather
than a job, a run that dies before posting leaves the head SHA at
"Expected" — which blocks the merge instead of passing it. Two paths
reached that state.

Same-repo: a `labeled` event shared the PR's concurrency group, so
labelling an open PR cancelled the live opened/synchronize run, and
the replacement run was then discarded by `plan`'s full-e2e guard --
so `e2e-report` skipped with it and nothing posted the status the
cancelled run was going to. Observed on live CI: run 30614258694
(cancelled) followed by 30614280603 (skipped) on the same SHA, 24s
apart, from a maintainer adding kind/* labels just after a push.
Label events now get their own concurrency group, so they can only
supersede each other. Release promotion is unaffected: `gh pr create
--label` attaches `release` at creation, so a promote PR gets a
single run that already sees the label (verified on #3397 and #3425,
one run each, build/finalize gated off).

Fork: `resolve` had no equivalent, so a cancelled triggering run fell
through to the `CONCLUSION != 'success'` branch and posted `failure`
— a false red on a SHA whose e2e never ran, which the replacement run
for that same SHA would not flip back (it takes the discarded-label
path and posts nothing). It now returns early on a cancelled or
wholly-skipped conclusion. Checked on the conclusion rather than the
job list because a cancelled run can report no jobs at all, which
would make the `Plan build` lookup miss.

Both stay fail-closed: declining to post can only preserve a verdict
a real run reached, never invent one.

Assisted-By: Claude <noreply@anthropic.com>
Signed-off-by: Myasnikov Daniil <myasnikovdaniil2001@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/release Issues or PRs related to release tooling (changelog, backport, release pipeline) full-e2e Run the full E2E app suite (bypass TIA selection) kind/cleanup Categorizes issue or PR as related to cleanup of code, process, or technical debt release Releasing a new Cozystack version size/M This PR changes 30-99 lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant