Bug Fix·Pushed May 4, 2026·S
Release-please workflows fixed for linked-versions
Release automation is back on track — the publish-cli and move-major-tag jobs now read the correct outputs from release-please, so npm publishing and tag management will fire automatically on future releases.
The release-please workflow was silently skipping two critical jobs after every release. The publish-cli job, which handles npm publishing, and move-major-tag, which updates the floating v0 tag, were both gated on outputs like [[code]]cli_release_created[[/code]] and [[code]]cli_tag_name[[/code]] — per-package outputs that don't exist when using the linked-versions plugin.
When multiple packages release together through linked-versions, the release is attributed to the group as a whole. Release-please-action only emits bare top-level outputs ([[code]]release_created[[/code]], [[code]]tag_name[[/code]], [[code]]major[[/code]]) in this scenario, not the path-and-name namespaced variants. The workflow was looking for the wrong signals.
With this fix, both downstream jobs now read the bare outputs that linked-versions actually provides. The v0.1.1 release required manual intervention — the floating tag was moved by hand and npm publishing was done as a one-off bridge. Future releases will handle both automatically.
This fix lives entirely in the GitHub Actions workflow configuration and requires no code changes to the packages themselves.
Technical description
The release-please workflow was reading per-package outputs that don't exist when the linked-versions plugin is active.
**The problem**: The [[code ref=1]]release-please[[/code]] job was exposing three outputs namespaced as [[code]]cli--release_created[[/code]], [[code]]cli--tag_name[[/code]], and [[code]]cli--major[[/code]]. These per-package outputs are only emitted in non-linked mode. With linked-versions, both packages share a single tag at the same version — release-please emits only the bare top-level outputs.
**The fix**: Remove the unavailable CLI-namespaced outputs from [[code ref=1]]release-please[[/code]]'s outputs definition. Update [[code ref=2]]move-major-tag[[/code]] and [[code ref=3]]publish-cli[[/code]] to gate on [[code]]release_created == 'true'[[/code]] and reference [[code]]tag_name[[/code]] and [[code]]major[[/code]] directly.
````yaml
file=.github/workflows/release-please.yml
outputs:
- cli_release_created: ${{ steps.rp.outputs['cli--release_created'] }}
- cli_tag_name: ${{ steps.rp.outputs['cli--tag_name'] }}
- cli_major: ${{ steps.rp.outputs['cli--major'] }}
+ # With linked-versions, only bare outputs are emitted
release_created: ${{ steps.rp.outputs.release_created }}
tag_name: ${{ steps.rp.outputs.tag_name }}
major: ${{ steps.rp.outputs.major }}
````
Downstream jobs changed from [[code]]cli_release_created[[/code]] to [[code]]release_created[[/code]], and from [[code]]cli_tag_name[[/code]] to [[code]]tag_name[[/code]].
**Files at a Glance**:
- [[code]].github/workflows/release-please.yml[[/code]] — release automation workflow configuration
Categories
- Bug Fix (70%) — Fixes broken automation that silently skipped publish and tag-move jobs during releases
- CI/CD (30%) — GitHub Actions workflow configuration changes for release-please