You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gitlab Job执行OWASP ZAP扫描后因退出码2失败,无详细错误日志

GitLab Job 退出码2失败(无详细错误日志)

问题

GitLab Job执行后因退出码2失败,日志仅显示ERROR: Job failed: exit code 2,无任何详细错误信息。

关联的.gitlab-ci.yml配置

image: docker:latest

services:
- name: docker:dind
  alias: thedockerhost

variables:
   DOCKER_HOST: tcp://thedockerhost:2375/
   DOCKER_DRIVER: overlay2
   DOCKER_TLS_CERTDIR: ""

stages:
  - test1

test1:
  stage: test1
  script:
    - docker run -v $(pwd):/zap/wrk/:rw --name zap2 owasp/zap2docker-stable zap-baseline.py -t http://www.example.com -r example.html
  artifacts:
    when: always
    paths: 
      - example.html

解决步骤

1. 捕获容器内完整输出

当前脚本未将ZAP工具的执行日志输出到GitLab Job日志中,修改script命令,把容器的标准输出和错误输出全部重定向到Job日志:

- docker run -v $(pwd):/zap/wrk/:rw --name zap2 owasp/zap2docker-stable zap-baseline.py -t http://www.example.com -r example.html 2>&1

若容器已退出,可额外添加日志查看命令(即使前面命令失败也能执行):

- docker run -v $(pwd):/zap/wrk/:rw --name zap2 owasp/zap2docker-stable zap-baseline.py -t http://www.example.com -r example.html 2>&1 || docker logs zap2

2. 明确ZAP退出码含义

ZAP的zap-baseline.py脚本退出码对应不同扫描结果:

  • 0:未发现风险
  • 1:发现警告级漏洞
  • 2:发现高危级漏洞
    退出码2大概率是扫描到高危漏洞,但需要日志确认具体漏洞信息。

3. 检查目录挂载权限

确保GitLab Runner工作目录的权限允许容器读写,可添加权限验证步骤:

- ls -la $(pwd)
- docker run --rm -v $(pwd):/zap/wrk/:rw owasp/zap2docker-stable touch /zap/wrk/test_permission && rm /zap/wrk/test_permission

若此步骤失败,说明挂载目录权限存在问题,需调整Runner工作目录权限或容器运行用户。

4. 避免容器名称冲突

当前命令使用--name zap2,若之前的Job残留了同名容器,会导致后续Job失败,建议添加--rm参数让容器退出后自动删除:

- docker run --rm -v $(pwd):/zap/wrk/:rw owasp/zap2docker-stable zap-baseline.py -t http://www.example.com -r example.html 2>&1

内容的提问来源于stack exchange,提问作者Ram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 00:01:31