fix(ci): force-publish releases as non-draft + latest
softprops/action-gh-release@v2 has a long-standing intermittent bug
where it creates the release as a draft and silently fails to flip the
draft→published step, even though it logs "🎉 Release ready" and the
job exits successfully. v1.4.0, v1.4.1, and v1.4.2 all shipped as
drafts because of this — meaning the GitHub `releases/latest` API
returned v1.3.0, the documented install snippets and the new install.sh
would both download v1.3.0, and admins running the upgrade flow would
never actually get the storage-type-code fix.
Two changes:
1. Pass `make_latest: 'true'` to the action so a successful create
also explicitly marks the release as latest (when the action is
working correctly).
2. Add an unconditional follow-up step `gh release edit --draft=false
--latest` that runs whenever the create step ran. If the action
already published correctly, this is a no-op. If it failed to
flip, we recover.
Token + variables go through `env:` blocks (not interpolated inline
into `run:`) to match the workflow injection guidance the rest of the
file already follows.
v1.4.0/1/2 were manually re-published with `gh release edit` as a
one-off cleanup; this fix prevents the same situation from recurring.
This commit is contained in:
21
.github/workflows/publish-release.yml
vendored
21
.github/workflows/publish-release.yml
vendored
@@ -166,3 +166,24 @@ jobs:
|
|||||||
body_path: /tmp/release-notes.md
|
body_path: /tmp/release-notes.md
|
||||||
draft: false
|
draft: false
|
||||||
prerelease: false
|
prerelease: false
|
||||||
|
make_latest: 'true'
|
||||||
|
|
||||||
|
# Belt-and-suspenders: action-gh-release@v2 has a long-standing
|
||||||
|
# intermittent bug where it creates the release as a draft and silently
|
||||||
|
# fails to flip the draft→published step, even though it reports success.
|
||||||
|
# When that happens the install script + README snippets resolve "latest"
|
||||||
|
# to whatever was last properly published, so users would get an old
|
||||||
|
# version. We explicitly flip to published + latest here as a safety net;
|
||||||
|
# if the action already did it correctly, this is a no-op.
|
||||||
|
#
|
||||||
|
# Security note: TAG and REPO are sourced from earlier `env:` blocks (not
|
||||||
|
# interpolated inline into the run command), matching the same pattern
|
||||||
|
# used elsewhere in this workflow.
|
||||||
|
- name: Force-publish release
|
||||||
|
if: steps.existing.outputs.skip != 'true'
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ github.token }}
|
||||||
|
TAG: ${{ steps.version.outputs.tag }}
|
||||||
|
REPO: ${{ github.repository }}
|
||||||
|
run: |
|
||||||
|
gh release edit "$TAG" --repo "$REPO" --draft=false --latest
|
||||||
|
|||||||
Reference in New Issue
Block a user