GitLab CI同阶段不同镜像间传递制品失败求助
GitLab CI制品传递失败问题排查与解决
核心问题分析
你的upload任务找不到报告文件,主要出在两个关键配置和执行环节:
制品上传触发条件限制
scan任务设置了allow_failure: true,但GitLab CI默认artifacts: when为on_success——如果scan任务实际执行失败(比如ZAP扫描命令出错),制品不会被上传,导致upload任务拿不到文件。未验证报告生成状态
scan任务脚本中没有确认/zap/wrk/$report是否真实存在,若ZAP命令未成功生成报告,后续的cp命令不会生效,最终制品为空。
修复后的配置
修改.gitlab-ci.yml如下:
variables: website: "https://test.site/" scantype: "zap-baseline.py" report: "owasp-zap-report.html" stages: - build scan: stage: build image: owasp/zap2docker-stable allow_failure: true before_script: - mkdir -p /zap/wrk script: - pwd - ls - $scantype -t $website -m 1 -d -I -r $report # 验证报告是否生成,避免cp操作无效 - ls /zap/wrk - cp /zap/wrk/$report . # 确认当前目录已存在报告文件 - ls . artifacts: paths: [$report] # 无论任务成功/失败都强制上传制品 when: always upload: stage: build dependencies: - scan image: ubuntu:20.04 script: - ls
额外验证建议
- 查看scan任务的执行日志,确认
ls /zap/wrk和ls .的输出中存在owasp-zap-report.html,确保文件确实被复制到当前工作目录。 - 若scan任务执行失败,检查
allow_failure: true是否生效,同时到GitLab项目的"制品"页面确认报告是否被正常上传。
内容的提问来源于stack exchange,提问作者rkevx21
相关产品推荐
相关产品推荐

