当 运行 工作流程 Github 操作时,Lerna 总是列出所有准备发布的包
Lerna always lists all packages ready to publish when running workflow of Github actions
Lerna 在 Github 操作的 运行 宁工作流程期间无法正确检测包更改。
如果我进行 none 包相关更改,请在本地提交和 运行lerna updated
。它告诉我 No changed packages found 这是正确的和预期的。
如果我进行与包相关的更改,请在本地提交和 运行 lerna updated
。它告诉我找到 x 个包准备发布 这也是正确和预期的。
但是,如果我推送基于1 or 2
的提交。我 运行 lerna updated
在我的 github 操作流程中的步骤总是 tells/lists 我所有的包都可以发布这是错误的。
我想知道为什么以及如何解决这个问题???
如果我进行了 none 包相关更改,这是我在本地看到的内容
lerna notice cli v3.20.2
lerna info versioning independent
lerna info Looking for changed packages since @xxx/bar@2.3.4
lerna info No changed packages found
这是我在将 none 包相关更改推送到 Github
后在工作流日志中看到的内容
> lerna updated -l
lerna notice cli v3.20.2
lerna info versioning independent
lerna info Assuming all packages changed
@xxx/bar v2.3.4 packages/Bar
@xxx/foo v1.4.4 packages/Foo
@xxx/hulk v1.0.4 packages/Hulk
lerna success found 3 packages ready to publish
这是我的工作流程
name: Publish
on:
push:
branches:
- master
jobs:
unit-test:
name: UnitTest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 12
- run: npm ci
- run: npm test
publish:
name: Publish NPM Packages
needs: unit-test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 12
registry-url: https://registry.npmjs.org/
- run: npm ci
- run: git config --global user.email "xxx"
- run: git config --global user.name "xxx"
- run: npm run updated
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_AUTH_TOKEN}}
这是我的package.json
{
"name": "root",
"devDependencies": {
"jest": "^25.1.0",
"lerna": "^3.20.2"
},
"scripts": {
"updated": "lerna updated -l",
"test": "jest"
}
}
这是我的 lerna 设置
{
"packages": [
"packages/*"
],
"version": "independent",
"command": {
"publish": {
"allowBranch": "master",
"conventionalCommits": true,
"message": "chore(release): updated release notes and package versions"
}
}
}
经过几个小时的调试。我自己找到了答案,感谢@peterevans 的提示
你必须把两者结合起来
以便所有 git 历史记录和标签都暴露给 lerna。
哇 - 不敢相信我终于找到了解决同一问题的方法 - 非常感谢!
我认为这是 github 操作(特别是 @actions/checkout)的一个大问题,因此我在这里通知了他们:https://github.com/actions/checkout/issues/217
我还通知了这里的 lerna
人:https://github.com/lerna/lerna/issues/2542
和 semantic-release
人:https://github.com/semantic-release/semantic-release/issues/1526
再次感谢!你帮我节省了很多时间并解决了一个烦人的问题,我希望我也能帮助其他人。干杯
所以这也应该解决问题:
lerna updated --include-merged-tags
或发布:
lerna publish --include-merged-tags
可能您使用的 git tag xxx
没有 -m
参数。如果你自己执行 git tag
而不是使用 lerna version
或 lerna publish
,你应该添加 -m
参数来使标记被注释。
参考:https://github.com/lerna/lerna/issues/1357#issuecomment-438162152
Lerna 在 Github 操作的 运行 宁工作流程期间无法正确检测包更改。
如果我进行 none 包相关更改,请在本地提交和 运行
lerna updated
。它告诉我 No changed packages found 这是正确的和预期的。如果我进行与包相关的更改,请在本地提交和 运行
lerna updated
。它告诉我找到 x 个包准备发布 这也是正确和预期的。
但是,如果我推送基于1 or 2
的提交。我 运行 lerna updated
在我的 github 操作流程中的步骤总是 tells/lists 我所有的包都可以发布这是错误的。
我想知道为什么以及如何解决这个问题???
如果我进行了 none 包相关更改,这是我在本地看到的内容
lerna notice cli v3.20.2
lerna info versioning independent
lerna info Looking for changed packages since @xxx/bar@2.3.4
lerna info No changed packages found
这是我在将 none 包相关更改推送到 Github
后在工作流日志中看到的内容> lerna updated -l
lerna notice cli v3.20.2
lerna info versioning independent
lerna info Assuming all packages changed
@xxx/bar v2.3.4 packages/Bar
@xxx/foo v1.4.4 packages/Foo
@xxx/hulk v1.0.4 packages/Hulk
lerna success found 3 packages ready to publish
这是我的工作流程
name: Publish
on:
push:
branches:
- master
jobs:
unit-test:
name: UnitTest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 12
- run: npm ci
- run: npm test
publish:
name: Publish NPM Packages
needs: unit-test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
with:
node-version: 12
registry-url: https://registry.npmjs.org/
- run: npm ci
- run: git config --global user.email "xxx"
- run: git config --global user.name "xxx"
- run: npm run updated
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_AUTH_TOKEN}}
这是我的package.json
{
"name": "root",
"devDependencies": {
"jest": "^25.1.0",
"lerna": "^3.20.2"
},
"scripts": {
"updated": "lerna updated -l",
"test": "jest"
}
}
这是我的 lerna 设置
{
"packages": [
"packages/*"
],
"version": "independent",
"command": {
"publish": {
"allowBranch": "master",
"conventionalCommits": true,
"message": "chore(release): updated release notes and package versions"
}
}
}
经过几个小时的调试。我自己找到了答案,感谢@peterevans 的提示
你必须把两者结合起来
以便所有 git 历史记录和标签都暴露给 lerna。
哇 - 不敢相信我终于找到了解决同一问题的方法 - 非常感谢!
我认为这是 github 操作(特别是 @actions/checkout)的一个大问题,因此我在这里通知了他们:https://github.com/actions/checkout/issues/217
我还通知了这里的 lerna
人:https://github.com/lerna/lerna/issues/2542
和 semantic-release
人:https://github.com/semantic-release/semantic-release/issues/1526
再次感谢!你帮我节省了很多时间并解决了一个烦人的问题,我希望我也能帮助其他人。干杯
所以这也应该解决问题:
lerna updated --include-merged-tags
或发布:
lerna publish --include-merged-tags
可能您使用的 git tag xxx
没有 -m
参数。如果你自己执行 git tag
而不是使用 lerna version
或 lerna publish
,你应该添加 -m
参数来使标记被注释。
参考:https://github.com/lerna/lerna/issues/1357#issuecomment-438162152