首页 > 解决方案 > 基于输出的Gitlab管道失败

问题描述

我在 Gitlab 管道中使用 docker 容器(sslyze)进行一些测试。该管道始终成功,但如果容器在其输出中报告“FAIL”,我希望管道失败。目前,如果在终端输出中报告“FAIL”,仍会报告退出代码 0(因为扫描本身有效),因此 Gitlab 通过管道。

我是 Gitlab 的新手,但对 Jenkins 很熟悉,在 Jenkins 中,您可能会使用Text Finder根据终端输出使工作失败。Gitlab中有类似的概念吗?

标签: gitlabgitlab-ci

解决方案


感谢评论中的@secustor 向我指出了一个类似的问题。我希望在 Gitlab 中有一些本机功能,但我找不到。

相反,我查询了容器日志和退出代码,然后根据结果设置退出代码 1。

在 .gitlab-ci.yml 中(我在将逻辑拆分为多行时遇到了问题,所以它都被塞进了一行):

  script:
  - docker run --name containername nablac0d3/sslyze --regular $URL
  - if [[ "$(docker logs containername >& container-logs ; cat container-logs | grep 'FAIL' | wc -l)" -gt 0 ]] || [[ "$(docker container wait containername)" -eq 1 ]]; then exit 1; fi

推荐阅读