Skip to content

chore(release): promote v1.6.2-rc.1 -> v1.6.2 - #3904

Merged
myasnikovdaniil merged 3 commits into
release-1.6from
release-1.6.2
Aug 19, 2026
Merged

chore(release): promote v1.6.2-rc.1 -> v1.6.2#3904
myasnikovdaniil merged 3 commits into
release-1.6from
release-1.6.2

Conversation

@cozystack-ci

@cozystack-ci cozystack-ci Bot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Promotes v1.6.2-rc.1 to stable v1.6.2 without rebuilding containers. Their digests remain bit-for-bit what passed rc e2e; the tag-rewritten packages tree is re-serialized as a temporary OCI candidate and pinned here by digest. On merge, pull-requests-release.yaml verifies that candidate against this tree before creating the write-once v1.6.2 tag, retagging the candidate and container digests to v1.6.2 (+:latest when this is the newest stable), publishing the stable cozy-installer chart, and publishing the release. Do NOT squash-merge (decision B): the stable tag must attach to a real merge commit.

⚠️ RC e2e gate bypassed — this promotion did not verify green full e2e evidence for v1.6.2-rc.1.

ℹ️ E2E already ran against the immutable rc, so this promote PR does not run E2E by default. A maintainer may add the full-e2e label to run the full suite again.

✅ Includes docs/changelogs/v1.6.2.md, which finalize uses verbatim as the published release body.

✅ Website docs PR opened/refreshed on cozystack/website (branch update-docs-v1.6.2), generated from the release-1.6.2 staging branch. Do NOT merge that PR until v1.6.2 is published — merging it early flips the site's latest-version pointer to an unpublished version and 404s its docs/API links (see the PR body).

Signed-off-by: cozystack-ci[bot] <274107086+cozystack-ci[bot]@users.noreply.github.com>
@cozystack-ci cozystack-ci Bot added the release Releasing a new Cozystack version label Aug 19, 2026
@github-actions github-actions Bot added 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 size/L This PR changes 100-499 lines, ignoring generated files labels Aug 19, 2026
myasnikovdaniil added a commit that referenced this pull request Aug 19, 2026
Fixes the false `promotion changed the container repository/digest set`
that blocks #3904.

`normalized_refs()` in `hack/verify-promoted-packages.sh` gives a
host-less ref a repository equal to its own tag.
`hack/lib/image-refs.sh` emits two entries per shape-3 map, the
correctly joined ref plus shape 1's recursive scrape of the bare `tag:
<tag>@sha256:...` scalar, and on that bare scalar `repo="${image%:*}"`
is a no-op because there is no `/` and no `:` in it. Promotion rewrites
exactly those tags, so `v1.6.2-rc.1` to `v1.6.2` shows up as six changed
repositories whose digests are identical on both sides.
`promote-retag.sh` never hits this because it drops host-less refs
through its ownership filter, the verifier had no equivalent.

Host-less refs now compare on digest alone, which is the whole of the
container identity such a ref carries. Checked against the real
published artifacts: before the fix 61 entries each side differing by
those six pairs, after it 60 each side with the sets equal and 48
container digests identical.

Two things this deliberately does not do, both written as comments at
the fix. Not dropping host-less refs outright, because
`packages/system/kuberture/values.yaml` carries an `image:` map with a
`tag:` and no `repository:`, so shape 1 is the only rule that ever sees
its digest and a drop would silently stop proving it unchanged. And not
reusing `promote-retag.sh`'s `${REGISTRY}/` ownership filter, because
the verify job's `REGISTRY` names the private build registry while both
artifacts under comparison live on the public one, so that filter drops
all 48 refs, and the emptiness guard above tests the raw collection
rather than the filtered set, so the check would pass by comparing two
empty sets.

Second commit adds the fixture that was missing. The existing suite
writes a host-bearing string and exercises a passing rc to stable
rewrite, so it read as coverage while never building a shape-3 split
map, which the library itself calls the dominant shape. Reverting the
fix reddens the new case on the digest-set assertion, and replacing the
fix with an outright skip of host-less refs makes the verifier exit 0 on
a genuinely changed digest.

Once this is on `release-1.6` the check on #3904 re-runs against this
copy, so no `rc.2` re-cut is needed. `main` carries the same script and
wants the same fix.
@myasnikovdaniil myasnikovdaniil added release Releasing a new Cozystack version and removed release Releasing a new Cozystack version labels Aug 19, 2026
cozystack-ci Bot added 2 commits August 19, 2026 07:31
Signed-off-by: cozystack-ci[bot] <274107086+cozystack-ci[bot]@users.noreply.github.com>
Signed-off-by: cozystack-ci[bot] <274107086+cozystack-ci[bot]@users.noreply.github.com>
@myasnikovdaniil
myasnikovdaniil merged commit bfde94f into release-1.6 Aug 19, 2026
12 of 13 checks passed
@myasnikovdaniil
myasnikovdaniil deleted the release-1.6.2 branch August 19, 2026 07:52
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) kind/cleanup Categorizes issue or PR as related to cleanup of code, process, or technical debt release Releasing a new Cozystack version size/L This PR changes 100-499 lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant