如何根据控制台输出中的文本使 GitLab 的 CI/CD 作业失败?
How to make GitLab's CI/CD job fail based on text in console output?
我正在使用 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
我正在使用 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