Recently we added jest@29.7.0 to the package-7/example-default and package-7/example-custom apps and then released a major. Given we were on 22.1.0, we expected a release of 23.0.0 but instead received 30.0.0. We bumped our logs up to veryVerbose and dug through and found 3 references within an invocation of npx auto shipit for the monorepo version being resolved at 29.7.0, 22.1.0, and 22.1.0:
npx auto shipit output lines 570-1093 (references v29.7.0):
+ℹ info NPM: Got previous version from package.json v29.7.0
ℹ info Getting labels for project: praxis
ℹ info Found labels on project:
[
...
]
Environment Information:
"auto" version: v10.43.0
"git" version: v2.39.2
"node" version: v20.16.0
GHE version: v3.11.7
Project Information:
✔ Repository: my-org/my-monorepo (https://<github_enterprise>/my-org/my-monorepo)
✔ Author Name:
✔ Author Email:
+✔ Current Version: v29.7.0
✔ Latest Release: v22.1.0 (https://<github_enterprise>/my-org/my-monorepo/releases/tag/v22.1.0)
npx auto shipit output lines 570-1093 (references v22.1.0 2x):
+ℹ info NPM: Got previous version from package.json v22.1.0
ℹ info Adding new changes to CHANGELOG.md.
ℹ info Calculating SEMVER bump using:
{
labels: [
...
],
versionLabels: Map(6) {
...
},
options: { onlyPublishWithReleaseLabel: undefined }
}
✔ success Calculated SEMVER bump: major
ℹ info Calculated next version to be: 23.0.0
ℹ info Old changelog exists, prepending changes.
ℹ info Wrote new changelog to filesystem.
+ℹ info NPM: Got previous version from package.json v22.1.0
✔ success Created old version branch: release-22
⚠ warning Everything up-to-date
Notably, /Users/me/my-org/my-monorepo/examples/package-7/example-default/node_modules/jest does not appear in the npx lerna ls output above, so auto's resolution of monorepo packages in this regard differs from lerna's resolution.
I do realize and acknowledge that (as I learned yesterday) adding foo/** patterns as packages is not a recommended pattern. We have now worked through the issue by dropping 'examples/**' in favor of 'examples/*', 'examples/*/*'.
The
getMonorepoPackage()
function returns the highest version package within the monorepo, but pays no respect to.gitignore
d values.https://github.com/intuit/auto/blob/be952834e3ce52a6a8a7da048bccaf87fef4eeec/plugins/npm/src/index.ts#L156-L192
For example, our monorepo contains these
packages
declared inlerna.json
:lerna@8.1.8
returns the following fornpx lerna ls
(lightly modified to de-name stuff):Recently we added
jest@29.7.0
to thepackage-7/example-default
andpackage-7/example-custom
apps and then released a major. Given we were on22.1.0
, we expected a release of23.0.0
but instead received30.0.0
. We bumped our logs up to veryVerbose and dug through and found 3 references within an invocation ofnpx auto shipit
for the monorepo version being resolved at29.7.0
,22.1.0
, and22.1.0
:npx auto shipit
output lines 570-1093 (referencesv29.7.0
):npx auto shipit
output lines 570-1093 (referencesv22.1.0
2x):Notably,
/Users/me/my-org/my-monorepo/examples/package-7/example-default/node_modules/jest
does not appear in thenpx lerna ls
output above, soauto
's resolution of monorepo packages in this regard differs from lerna's resolution.I do realize and acknowledge that (as I learned yesterday) adding
foo/**
patterns aspackages
is not a recommended pattern. We have now worked through the issue by dropping'examples/**'
in favor of'examples/*', 'examples/*/*'
.