如何根据控制台输出中的文本使GitLab的CI / CD作业失败?

时间:2019-08-08 15:37:05

标签: bash gitlab gitlab-ci gitlab-ci-runner lerna

我正在使用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使作业失败。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

如果您在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