ci: drop package-name so the grouped release PR resolves its component - #68
Merged
Merged
Conversation
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Aug 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release-please has refused to create the
v0.1.0tag across three cycles. It finds the correct merged release PR (#67) and then aborts:That abort is a consequence, not the cause. Earlier in the same run, in the
Building releasesphase, is the real failure:Root cause:
getComponent()andgetBranchComponent()disagreerelease-pleasev17.3.0,src/strategies/base.ts:getBranchComponent()ignoresinclude-component-in-tag;getComponent()honours it.package-name: "nl2sql-engine"is what populatedthis.component.Meanwhile, because
separate-pull-requestsisfalse, the Merge plugin names the grouped release branch itself:giving
release-please--branches--main— no component in it. On the way back,buildReleasecomparesbranchName.component(undefined) againstgetBranchComponent()(nl2sql-engine), mismatches, and returns without building a release. No tag, ever.This only bites with exactly one root package, grouping on,
package-nameset, andinclude-component-in-tag: false.Verification
Driven against this repo and PR #67's real body through
strategy.buildReleases()on release-please 17.3.0 — the exact version CI runs:chore: release mainPR component: undefined does not match configured component: nl2sql-engine(reproduces CI exactly)group-pull-request-title-patternchore: release 0.1.0package-name)chore: release maintag=v0.1.0✅package-name+ title patternchore: release mainBad pull request titleRow 2 is the important one: changing the title pattern does not fix this. Row 4 is why it must not be changed — see below.
The title-pattern warnings are noise
pullRequestTitlePattern miss the part of '${...}'fires unconditionally whenever a pattern omits a placeholder. The built-in grouped-PR default ischore: release ${branch}(src/manifest.ts:295), which omits all three, so these warnings appear on healthy runs too.A title without
${version}is not fatal. Release-please falls back to the PR body, whose<summary>0.1.0</summary>block carries the version — the documentation says it parses it "either via the pull request title or body format".Do not strip
autorelease: pendingfrom #67#67's label must be left alone, or
0.1.0is stranded permanently.With this fix, #67 tags
v0.1.0from its body, release-please swaps its label toautorelease: tagged, and the abort clears on its own.publish_pypi.yamlthen fires onv0.1.0(tags: ["v*"]— tag naming is unaffected, verifiedv0.1.0).Stripping the label instead makes release-please forget #67 entirely. The manifest already reads
0.1.0, so the next release PR would bump0.1.0→0.2.0and0.1.0would never be published.Why removing
package-nameis safeIt was inert apart from the bug.
src/strategies/python.tssetsprojectName = pyProject.name, so the__init__.pyandchangelog.jsonupdaters read the rootpyproject.toml— whose name isnl2sql-monorepo, notnl2sql-engine. The set of files release-please updates is unchanged, andgetComponent()was already"".Also in this PR
A troubleshooting section in
docs/development/releasing.mdrecording both traps with their exact greppable symptoms: this component mismatch (including that thepullRequestTitlePatternwarnings are not the cause — that misdiagnosis cost a cycle), and that the manifest holds the last released version and must be seeded below the first target.No version,
CHANGELOG.md, or.release-please-manifest.jsonwas touched. Unit231 passed, 1 skipped, 47 deselectedand key-free integration28 passed, both twice;mkdocs build --strictclean.