我正在使用 Lerna 来管理多包存储库,在我的部署作业中,我使用 Lerna 的publish
命令。对我来说,如果在包中更改了代码,它应该始终将新版本发布到我们的 Artifactory,如果未发布任何内容,则作业失败,但publish
命令将以成功代码(我猜是 0 代码(退出,即使没有发布包:
$ npx lerna publish from-package --yes
lerna notice cli v3.13.1
lerna info ci enabled
lerna notice from-package No unpublished release found
lerna success No changed packages to publish
Job succeeded
我想我可以通过将输出管道传输到 GREP 并搜索文本"No changed packages to publish"
来解决此问题,但随后不确定如何告诉 Gitlab 在找到该文本时使作业失败。
有什么建议吗?
> 如果您在 bash 脚本中调用npx
,则可以捕获文本并以非 0 状态退出:
lerna_output=$(npx lerna publish from-package --yes) || exit $?
nothing_published=$(echo $lerna_output | grep 'No changed packages to publish')
if [ "$nothing_published" != "" ]; then
echo $lerna_output
exit 1
fi