ci: drop push-tags trigger from release-helm-chart workflow#117
ci: drop push-tags trigger from release-helm-chart workflow#117
Conversation
`gh release create v<x.y.z>` (the established release path per `gh release list`) fires both `push` (tag) and `release` (published) events, which causes two parallel workflow runs to race for the gh-pages push. The slower run fails with non-fast-forward. Most recent example: v1.3.2 cut today — run 25492826437 (release event) failed; run 25492826350 (push event) succeeded. Artifacts landed fine, but the failed sibling shows up as a red X on the release and is noise for anyone debugging future releases. Keeping only `release: published` removes the race. The `Upload chart to GitHub Release (on tag)` step's `startsWith(github.ref, 'refs/tags/')` guard still evaluates true for release events (`github.ref` is the tag ref), so the upload step behaviour is preserved. Closes #116
|
👋 Heads-up — Code review queue is at 11 / 8 Above the WIP limit. The team convention is to review existing PRs before opening new work. Open PRs currently in Code review (oldest first):
Pull from review before opening new work. (This is a nudge from the kanban WIP check, not a block.) |
With the push-tags trigger removed, the upload step's `if: startsWith(github.ref, 'refs/tags/')` guard is the only thing keeping the upload from running, but it silently evaluates to false when `github.ref` arrives empty — a known intermittent runner bug (actions/runner#2788, still open as of 2026-05). The same bug also affects `github.ref_name`, which softprops/action-gh-release@v2 uses by default to derive the tag, so the action itself can target the wrong release (or fail) when the bug fires. Drop the now-redundant `if:` guard (the workflow only runs on `release: published`, so every run is by definition a release event) and pass `tag_name` explicitly from the release event payload, which is unaffected by the bug.
|
Pushed 12c7a4c addressing review feedback on the previous commit. The original PR removed the
Two changes:
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 12c7a4c. Configure here.
actions/checkout@v4 defaults `ref` to github.ref, which is the same field hit by actions/runner#2788 — the still-open intermittent bug where github.ref arrives empty on release-triggered runs. Per the action's docs, when "checking out the repository that triggered a workflow, this defaults to the reference or SHA for that event. Otherwise, uses the default branch." So an empty github.ref would fall back to the repo default branch (develop here), and we'd package the chart from develop's HEAD instead of the tagged commit. Pin ref explicitly to github.event.release.tag_name, which is part of the release event payload and is unaffected by the runner bug.
|
Pushed 4466e0c addressing the second review note on the checkout step. Same root cause as the previous fix — Pin After this commit, all three release-event-dependent steps (checkout, gating, asset upload) source the tag from |

Summary
push: tags: ['client-v*', 'v*']trigger from.github/workflows/release-helm-chart.yaml, keeping onlyrelease: types: [published].gh release createfires (tag push + release published), where the slower run fails withcannot lock ref ... non-fast-forwardon thegh-pagespush.Why
gh release create v<x.y.z>is the established release path (seegh release list— every release v1.0.0 through v1.3.2 was created this way). It fires bothpush(tag) andrelease(published) events simultaneously, so the workflow ran twice for every release and one of the two consistently failed when racing ongh-pages.Most recent failure: v1.3.2 cut today (2026-05-07).
event: push— succeededevent: release— failed (gh-pages push rejected)Artifacts (
client-1.3.2.tgz, updatedindex.yaml, release asset) landed correctly, but the failed sibling clutters the release page.The release-asset upload step (
if: startsWith(github.ref, 'refs/tags/')) still evaluates true under thereleaseevent, sincegithub.refis the tag ref on a release event — no behaviour change.Closes #116.
Test plan
gh release create v<x.y.z>produces exactly one workflow run, withevent: release.client-<version>.tgzpublished togh-pages,index.yamlupdated, and release asset attached as before.🤖 Generated with Claude Code
Note
Medium Risk
Workflow-only change, but it affects the release pipeline; misconfiguration could cause charts to be packaged from the wrong commit or fail to publish/upload during releases.
Overview
Publishes Helm charts only from
release: publishedevents by removing the tagpushtrigger, avoiding duplicate/racing runs that compete to push updates togh-pages.Hardens release-triggered runs by explicitly checking out and uploading assets using
github.event.release.tag_name(instead ofgithub.ref), preventing intermittent empty-ref issues that could package or attach charts from the wrong commit.Reviewed by Cursor Bugbot for commit 4466e0c. Bugbot is set up for automated code reviews on this repo. Configure here.