myasnikovdaniil
9f5550abdd
fix(release): publish rewritten packages during RC promotion (#3795)
## What this PR does
Fixes #3477.
- Publishes a new packages OCI candidate after rewriting RC image tags
to stable tags.
- Pins the candidate digest in the stable installer without rebuilding
container images.
- Verifies the candidate against the prospective merge and original RC
artifact before creating stable names.
- Refuses promotion when the target maintenance branch lacks the
candidate-aware pipeline.
- Protects candidates referenced by open release PRs from retention
cleanup.
- Leaves already published v1.6.0 and v1.6.1 unchanged.
### Screenshots
Not applicable.
### Downstream repositories
- [x] No downstream repository is affected by this change
- [ ] [cozystack/website](https://github.com/cozystack/website) -
follow-up:
- [ ]
[cozystack/terraform-provider-cozystack](https://github.com/cozystack/terraform-provider-cozystack)
- follow-up:
- [ ]
[cozystack/ansible-cozystack](https://github.com/cozystack/ansible-cozystack)
- follow-up:
- [ ] [cozystack/ccp](https://github.com/cozystack/ccp) - follow-up:
- [ ] [cozystack/talm](https://github.com/cozystack/talm) - follow-up:
- [ ] [cozystack/cozyhr](https://github.com/cozystack/cozyhr) -
follow-up:
- [ ] [cozystack/cozy-proxy](https://github.com/cozystack/cozy-proxy) -
follow-up:
- [ ]
[cozystack/cozystack-telemetry-server](https://github.com/cozystack/cozystack-telemetry-server)
- follow-up:
- [ ]
[cozystack/external-apps-example](https://github.com/cozystack/external-apps-example)
- follow-up:
- [ ] [cozystack/examples](https://github.com/cozystack/examples) -
follow-up:
### Testing
- `bats --no-tempdir-cleanup hack/promote-packages-artifact_test.bats
hack/verify-promoted-packages_test.bats
hack/promote-packages-contract.bats
hack/promotion-retention-contract.bats`
- `actionlint .github/workflows/promote-rc.yaml
.github/workflows/pull-requests.yaml
.github/workflows/pull-requests-release.yaml
.github/workflows/retention.yaml`
- `sh -n hack/promote-packages-artifact.sh
hack/verify-promoted-packages.sh`
- `git diff --check origin/main...HEAD`
### Release note
```release-note
fix(release): publish the rewritten stable packages artifact when promoting a release candidate
```
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Release candidates now use temporary, immutable package artifacts
verified before stable publication.
- Stable promotions validate package contents, installer references,
container digests, and release metadata before tagging.
- Temporary promotion artifacts are retained while needed and cleaned up
after expiration.
- **Bug Fixes**
- Improved handling of release labels, fork pull requests, and promotion
pull requests.
- Added end-to-end verification before release promotion.
- Prevented invalid, ambiguous, or untrusted package references from
being promoted.
- **Documentation**
- Updated release and promotion guidance for candidate verification,
digest pinning, and transactional promotion.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-08-17 12:52:19 +05:00
..
2026-07-15 15:31:45 +03:00
2026-08-17 03:09:04 +03:00
2026-08-14 18:37:59 +05:00
2026-07-27 14:03:49 +05:00
2026-08-05 16:03:57 +03:00
2026-08-12 18:43:02 +03:00
2026-08-07 23:53:40 +03:00
2025-01-09 12:24:51 +01:00
2026-08-07 23:53:40 +03:00
2026-06-25 10:21:05 +05:00
2026-06-24 23:17:25 +03:00
2026-08-09 14:42:19 +03:00
2026-08-05 17:37:04 +03:00
2026-04-14 19:59:19 +05:00
2026-07-24 11:34:17 +05:00
2026-06-24 22:43:56 +03:00
2026-08-05 16:03:57 +03:00
2026-08-05 16:03:57 +03:00
2026-08-05 16:03:57 +03:00
2026-04-11 17:07:35 +03:00
2026-05-27 16:21:46 +03:00
2026-05-27 11:16:41 +03:00
2026-07-14 13:08:54 +03:00
2025-12-25 16:54:22 +01:00
2026-05-12 03:04:48 +03:00
2026-06-30 19:40:47 +03:00
2026-08-05 14:19:47 +03:00
2026-08-10 10:30:30 +02:00
2025-07-03 14:26:56 +03:00
2026-07-29 17:47:28 +05:00
2026-07-29 17:47:28 +05:00
2026-08-05 17:37:04 +03:00
2026-08-07 14:38:29 +03:00
2026-08-07 23:53:40 +03:00
2026-08-07 14:38:29 +03:00
2026-08-12 18:37:09 +03:00
2026-06-24 15:32:52 +03:00
2026-08-08 17:08:54 +03:00
2026-08-09 04:08:35 +03:00
2026-04-30 14:52:56 +03:00
2026-02-17 22:54:12 +01:00
2026-07-14 17:07:47 +03:00
2026-08-09 14:42:19 +03:00
2026-08-05 17:37:04 +03:00
2026-08-11 02:31:27 +03:00
2026-06-30 19:40:47 +03:00
2026-08-14 11:08:49 +03:00
2026-08-14 11:08:49 +03:00
2026-08-10 00:10:53 +03:00
2026-08-11 02:31:27 +03:00
2026-05-25 11:56:30 +05:00
2026-07-09 18:21:07 +05:00
2026-08-07 23:53:40 +03:00
2026-07-19 20:16:01 +03:00
2026-08-14 18:37:57 +05:00
2026-08-14 11:08:49 +03:00
2026-08-12 18:45:22 +03:00
2026-08-12 18:45:22 +03:00
2026-07-21 23:15:46 +05:00
2026-08-12 16:35:36 +03:00
2026-06-30 12:08:18 +05:00
2026-08-07 06:49:56 +03:00
2026-07-14 14:37:52 +03:00
2026-03-03 19:10:39 +05:00
2026-07-20 11:29:09 +05:00
2026-07-20 15:40:49 +05:00
2026-07-08 22:27:42 +03:00
2026-08-07 23:53:40 +03:00
2026-08-07 23:53:40 +03:00
2026-07-28 18:07:34 +02:00
2026-08-07 23:53:40 +03:00
2026-06-30 16:56:33 +03:00
2026-08-14 01:25:34 +03:00
2026-08-12 18:42:58 +03:00
2026-07-24 18:16:16 +05:00
2026-08-05 16:46:50 +03:00
2026-08-10 00:10:53 +03:00
2024-10-21 11:59:56 +02:00
2026-08-10 12:08:02 +03:00
2026-08-14 18:37:58 +05:00
2026-08-14 18:37:58 +05:00
2026-08-14 18:37:59 +05:00
2026-08-05 16:03:57 +03:00
2026-07-27 13:56:45 +05:00
2026-08-05 14:19:47 +03:00
2026-07-21 21:08:15 +05:00
2026-08-14 18:37:59 +05:00
2026-08-07 23:53:40 +03:00
2026-08-07 23:53:40 +03:00
2026-08-11 19:40:01 +05:00
2026-08-05 16:03:57 +03:00
2026-08-16 05:17:16 +03:00
2026-07-08 18:06:22 +05:00
2026-08-15 10:19:19 +03:00
2026-08-16 05:17:16 +03:00
2026-08-15 10:19:19 +03:00
2026-08-09 02:51:06 +03:00
2026-08-15 23:33:33 +03:00
2026-08-14 14:34:37 +03:00
2026-08-09 16:17:44 +03:00
2026-08-16 05:17:16 +03:00
2026-08-11 02:31:27 +03:00
2026-08-15 02:41:19 +03:00
2026-07-20 15:40:48 +05:00
2026-07-27 13:52:59 +05:00
2026-07-27 13:52:59 +05:00
2026-07-24 18:16:16 +05:00
2026-08-09 22:24:37 +03:00
2026-08-10 21:17:47 +04:00
2026-08-05 16:03:57 +03:00
2026-07-30 16:04:03 +04:00
2026-08-09 13:31:54 +03:00
2026-08-09 16:17:26 +03:00
2026-08-07 14:38:06 +03:00
2026-07-21 23:59:48 +03:00
2026-01-19 13:59:29 +01:00
2026-03-25 15:57:25 +05:00
2025-11-26 20:18:43 +01:00
2026-07-24 11:34:17 +05:00
2026-08-14 18:37:59 +05:00
2026-08-14 18:37:58 +05:00