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

GitLab CI同阶段不同镜像间传递制品失败求助

GitLab CI制品传递失败问题排查与解决

核心问题分析

你的upload任务找不到报告文件,主要出在两个关键配置和执行环节:

  1. 制品上传触发条件限制
    scan任务设置了allow_failure: true,但GitLab CI默认artifacts: when为on_success——如果scan任务实际执行失败(比如ZAP扫描命令出错),制品不会被上传,导致upload任务拿不到文件。

  2. 未验证报告生成状态
    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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:15:38