gitlab - 基于输出的Gitlab管道失败
问题描述
我在 Gitlab 管道中使用 docker 容器(sslyze)进行一些测试。该管道始终成功,但如果容器在其输出中报告“FAIL”,我希望管道失败。目前,如果在终端输出中报告“FAIL”,仍会报告退出代码 0(因为扫描本身有效),因此 Gitlab 通过管道。
我是 Gitlab 的新手,但对 Jenkins 很熟悉,在 Jenkins 中,您可能会使用Text Finder根据终端输出使工作失败。Gitlab中有类似的概念吗?
解决方案
感谢评论中的@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
推荐阅读
- excel - VBA - 使用参数从 Excel 调用 Access 文件中的 SUB
- android - 在移动键盘中按下“下一个输入”键时显示离子日期时间
- jquery - 如何在 MVC 视图的 foreach 块中使用 jQuery 操作段落标签
- r - 过滤表中的定向共现
- bash - 打印格式类似于 `ls` 命令的文本输出的字串
- ethereum - web3.eth.accounts.create 方法实际上并没有创建新帐户
- python - 不懂 Python 描述符的解释不能是实例变量
- c++ - 处理大型头文件
- javascript - 如何在javascript的变量中转义特殊字符
- javascript - redux-saga:如何在并行任务中忽略一个错误并获得其他响应?