Skip to content

[r3.4] ci: improve release workflow robustness and inline debian pkg build#19853

Merged
lystopad merged 2 commits into
release/3.4from
feature/lystopad/chery-pick-release-workflow-changes-to-r34
Mar 12, 2026
Merged

[r3.4] ci: improve release workflow robustness and inline debian pkg build#19853
lystopad merged 2 commits into
release/3.4from
feature/lystopad/chery-pick-release-workflow-changes-to-r34

Conversation

@lystopad

Copy link
Copy Markdown
Member

Summary

Cherry-pick of #19825 and #19847 to release/3.4.

  • Improve release workflow robustness (early release existence check, artifact verification, non-fatal skopeo delete, GitHub App token for publish step)
  • Inline debian package build (removing separate reusable workflow file)
  • Fix debian control file heredoc inside for loop
  • Update docker actions to v4.0.0 (Node.js 24)
  • Pin actions/create-github-app-token to v2.2.1 SHA (Node.js 24)

…19825)

- Fix single-quote bug in `git ls-remote` tag check — variable was never
expanded, check always passed silently
- Fix `In-case-of-failure` rollback condition — was logically inverted
(fired when build failed, not when it succeeded); rewritten with
multi-line OR logic

- Add early check at start of `build-release`: fail immediately if a
GitHub Release for the version already exists (operator error)
- Add artifact verification step before upload in `build-release`
(checks all 3 platform tars exist and are non-empty)
- Add artifact verification step in `publish-release` after downloads
(checks all 5 files: 3 tars + 2 debs)
- Increase artifact `retention-days` from 3 → 7 (tests can run up to
46h; 3 days was too close)
- `gh release create` is now non-fatal: on failure prints a
`::warning::` annotation and copy-pasteable manual instructions so the
operator can publish without re-running the full pipeline
- Replace `github.token` with a GitHub App token (`RELEASE_BOT_APP_ID` /
`RELEASE_BOT_APP_KEY`) in `publish-release` — freshly minted per job, no
expiration issues after long test runs; releases are attributed to the
release bot
- Remove unused artifact downloads from `publish-docker-image` (tar
files were downloaded but never used — skopeo copies from registry
directly)
- `skopeo delete` failure now emits a `::warning::` instead of silently
succeeding via `&& echo`

`reusable-release-build-debian-pkg.yml`)
- Inline the reusable workflow — it was only ever called from here; one
file is clearer
- Delete `reusable-release-build-debian-pkg.yml`
- Remove unnecessary `apt-get upgrade` (was upgrading all runner
packages)
- Merge duplicate amd64/arm64 build steps into a single loop
- Add `Depends: libc6` to control file (CGO binary requires glibc)
- Fix `postinst` to use `#!/bin/sh` (Debian policy) with proper argument
handling
- Improve `postinst` message text: clearer, correct grammar, no stray
punctuation
- Document x86-64-v2 CPU requirement in the amd64 package description
- Add debian package verification step (`dpkg-deb --info`) before upload
- Remove unused `.deb.checksum` artifact uploads (4 → 2 uploads)
- Fix `retention-days` 5 → 7 for .deb artifacts

Generated with Claude.

(cherry picked from commit a87e627)
## Summary

- Pin `actions/create-github-app-token` from `@v2` to SHA of `v2.2.1`
- Fixes Node.js 20 deprecation warning in the "Publish release notes"
step
- Consistent with the SHA-pinning approach used for other actions in
this workflow

(cherry picked from commit 37041f6)
@lystopad lystopad self-assigned this Mar 12, 2026
@lystopad lystopad requested a review from yperbasis March 12, 2026 09:45
@lystopad lystopad enabled auto-merge (squash) March 12, 2026 09:46
@lystopad lystopad merged commit 38aca05 into release/3.4 Mar 12, 2026
21 of 22 checks passed
@lystopad lystopad deleted the feature/lystopad/chery-pick-release-workflow-changes-to-r34 branch March 12, 2026 10:24
yperbasis pushed a commit that referenced this pull request Mar 25, 2026
…build (#20150)

## Summary

Backport of [#19853](#19853)
(originally cherry-picked to `release/3.4` as `38aca05899`) to
`release/3.3`.

- Improve release workflow robustness (early release existence check,
artifact verification, non-fatal skopeo delete, GitHub App token for
publish step)
- Inline debian package build — removes the separate
`reusable-release-build-debian-pkg.yml` workflow file
- Fix debian control file heredoc inside for loop
- Update docker actions to v4.0.0 (Node.js 24)
- Pin `actions/create-github-app-token` to v2.2.1 SHA (Node.js 24)
- Add `disable_version_check` input flag
- Bump `actions/checkout`, `upload-artifact`, `download-artifact` to
latest versions
- Change `checkout_ref` default to `'release/x.x'` — **operator must set
this manually** (acts as a safety check to prevent accidentally building
from wrong branch)

## 3.3-specific adjustments (second commit)

1. **`mcp` excluded from `BINARIES`** — `cmd/mcp` does not exist in
`release/3.3`; it was intentionally kept out of this branch
2. **Re-applied changes skipped by git auto-merge** — several hunks were
silently resolved to the 3.3 version due to context differences;
manually re-applied: `checkout_ref` default, `disable_version_check`
input, version validation step, and all action version bumps

## Test plan

- [ ] Trigger the release workflow on `release/3.3` with
`perform_release=false` and verify the build-release + build-debian-pkg
jobs complete successfully
- [ ] Verify `checkout_ref` default shows `'release/x.x'` in the
workflow dispatch UI (not `'main'`)
- [ ] Verify `reusable-release-build-debian-pkg.yml` is gone and debian
build runs inline
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.

2 participants