Skip to content

feat(library-publish): a plan job, so callers need no paths filter - #18

Merged
igorlamos merged 1 commit into
mainfrom
feat/library-publish-plan-job
Oct 8, 2026
Merged

igorlamos merged 1 commit into
mainfrom
feat/library-publish-plan-job

Conversation

@beplus-agent-claude

@beplus-agent-claude beplus-agent-claude Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Fast-forwarding beplus/uix's stage started no run at all. Its caller's paths filter is common/changes/**, and a promotion's diff never has a change file, because the version commit deletes them. GitHub also matches paths against the first 300 changed files only, so with any filter, a big promotion can be missed the same way. A promotion shouldn't depend on a path filter.

The filters exist to keep dev from installing and building on every push that has nothing to release. This moves that job into the workflow, so callers can drop paths.

The change

  • A new plan job, on dev only, decides in seconds whether there's anything to release. It does a sparse checkout of common/changes only and applies the same rules release applies after building: force, change files, or dev on a version commit (a re-run of a release whose publishing failed). It skips a version commit's own push by its message, as release did.
  • release needs plan and runs only when it says so, still deciding again on the dev it builds. A push with nothing to release never installs or builds.
  • promote is unchanged.
  • README: the caller example has no paths, and a "No paths filter" note explains why.

Tested

Not run on GitHub yet. Locally, plan's decision script ran in scratch git repos for: a merge with change files, a docs-only merge, no common/changes at all, force, and dev on a version commit. All decided as release would. shellcheck is clean, and the branch merges cleanly into main after #17.

Companions

26 caller PRs drop their paths filter: beplus/analytics#71, beplus/ai#24, beplus/api#5, beplus/auth#24, beplus/aws#7, beplus/billing#4, beplus/cdk#10, beplus/cms#46, beplus/config#7, beplus/data#16, beplus/database#10, beplus/docs#28, beplus/events#4, beplus/messaging#4, beplus/metering#4, beplus/mobile#5, beplus/npm#4, beplus/provisioning#4, beplus/pulse#4, beplus/rush#7, beplus/saas#13, beplus/schema#4, beplus/server#5, beplus/sync#4, beplus/uix#118, beplus/web#5. Merge them after this one is merged and v2 has moved; merged earlier, every push to dev would run the old full install and build just to find nothing to release.

After merge

  • Tag v2.11.0 and move v2.
  • Merge the caller PRs.
  • Promote stage for aws, cdk, config, database, docs and uix (a dispatch, or the next fast-forward), then prod.

The callers' `paths` filters kept promotions from running. beplus/uix watches
only common/changes/**, and a promotion's diff never has a change file (the
version commit deletes them), so fast-forwarding its stage published nothing.
GitHub also matches `paths` against the first 300 changed files only, so any big
promotion could be missed the same way.

`plan` decides on dev, in seconds, whether there is anything to release: force,
change files, or dev on a version commit (a re-run of a release whose publishing
failed), from a sparse checkout of common/changes. `release` needs it, so a push
with nothing to release never installs or builds, and still decides again on
the dev it builds. Callers can trigger on every push to dev, stage and prod.

Co-Authored-By: Igor Lamos <igor@be.plus>
@igorlamos igorlamos self-assigned this Oct 8, 2026
@igorlamos
igorlamos merged commit e31c7a1 into main Oct 8, 2026
@igorlamos
igorlamos deleted the feat/library-publish-plan-job branch October 8, 2026 17:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants