ci: split release-please into independent release and PR creation steps#124
ci: split release-please into independent release and PR creation steps#124
Conversation
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
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, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 26d0727. Configure here.
| steps.release.outputs['packages/sdk/server-ai--release_created'] != 'true' && | ||
| steps.release.outputs['packages/ai-providers/server-ai-langchain--release_created'] != 'true' && | ||
| steps.release.outputs['packages/ai-providers/server-ai-openai--release_created'] != 'true' && | ||
| steps.release.outputs['packages/optimization--release_created'] != 'true' |
There was a problem hiding this comment.
Monorepo PR creation skipped on partial release
Medium Severity
The second-pass condition uses && across all four release_created != 'true' checks, so if even one package releases, the entire PR-creation step is skipped. In this monorepo, the first pass has skip-github-pull-request: true, meaning it never creates or updates release PRs at all. When a subset of packages release (e.g. only server-ai), the remaining packages (langchain, openai, optimization) that have pending changes will not get their release PRs created or updated in that run — they must wait until the next push to main where no package releases, potentially stalling their release cycle.
Reviewed by Cursor Bugbot for commit 26d0727. Configure here.
|
Closing: The split release-please pattern is only needed for repos with artifact uploads. This attestation-only repo doesn't need it. The attestation changes are in PR #118. |


Requirements
Related issues
Follows the pattern established in ld-relay PR #622 to support GitHub's immutable releases.
Describe the solution you've provided
Splits the single
release-please-actioninvocation into two sequential passes:skip-github-pull-request: true): Creates GitHub releases only.gh api).skip-github-release: true): Runs only when no releases were created; handles PR creation/updates.This separation is required because release-please checks for an existing tag when deciding whether to open a new release PR. Without the split, release-please could open a duplicate PR immediately after publishing a release because the tag wasn't yet visible.
Since this is a monorepo (4 packages), the tag creation step iterates over all packages, creating tags only for those that were actually released.
Describe alternatives you've considered
A single release-please call with post-processing — rejected because the tag must exist before release-please evaluates PR state, requiring the two-pass approach.
Additional context
Key items for reviewer attention:
&&(all four!= 'true'), meaning PR creation is skipped if any package released. Verify this is correct for a monorepo where only a subset of packages may release in a given run.envvariables (not inline${{ }}expansion) to prevent script injection.outputsblock still reads fromsteps.release.outputs[...](the first pass). Confirm thatskip-github-pull-request: truedoes not suppress these output fields.# v4to# v4.4.0— the pinned SHA is unchanged.release-server-ai,release-server-ai-langchain, etc.) or themanual-publishjob.Link to Devin session: https://app.devin.ai/sessions/7d5bda4d9dbe4ae0b950b30a50485e60
Requested by: @keelerm84
Note
Medium Risk
Changes the release automation flow to create/push git tags and gate PR creation, which can affect publishing behavior across all packages if the conditions or tag creation logic are wrong.
Overview
Restructures the
release-pleaseGitHub Actions workflow to run in two passes: first creating GitHub releases only (skip-github-pull-request: true), then (when any package release is created) checking out the repo and creating/pushing the corresponding git tags with an idempotent existence check viagh api.Adds a second
release-pleaseinvocation that runs only when no releases were created to handle release PR creation/updates (skip-github-release: true), preventing PRs from being opened immediately after a release before tags are visible.Reviewed by Cursor Bugbot for commit 26d0727. Bugbot is set up for automated code reviews on this repo. Configure here.