Repository navigation
feat(library-publish): a plan job, so callers need no paths filter - #18
Merged
Merged
Conversation
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
approved these changes
Oct 8, 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 free
to 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.
Fast-forwarding beplus/uix's
stagestarted no run at all. Its caller'spathsfilter iscommon/changes/**, and a promotion's diff never has a change file, because the version commit deletes them. GitHub also matchespathsagainst 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
devfrom installing and building on every push that has nothing to release. This moves that job into the workflow, so callers can droppaths.The change
planjob, ondevonly, decides in seconds whether there's anything to release. It does a sparse checkout ofcommon/changesonly and applies the same rulesreleaseapplies after building: force, change files, ordevon a version commit (a re-run of a release whose publishing failed). It skips a version commit's own push by its message, asreleasedid.releaseneedsplanand runs only when it says so, still deciding again on thedevit builds. A push with nothing to release never installs or builds.promoteis unchanged.paths, and a "Nopathsfilter" 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, nocommon/changesat all, force, anddevon a version commit. All decided asreleasewould. shellcheck is clean, and the branch merges cleanly intomainafter #17.Companions
26 caller PRs drop their
pathsfilter: 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 andv2has moved; merged earlier, every push todevwould run the old full install and build just to find nothing to release.After merge
v2.11.0and movev2.stagefor aws, cdk, config, database, docs and uix (a dispatch, or the next fast-forward), thenprod.