极狐GitLab CI/CD 产物报告类型

使用 artifacts:reports

  • 收集作业中包含的模板生成的测试报告、代码质量报告、安全报告和其它产物。
  • 其中一些报告用于显示以下信息:

无论作业结果如何(成功或失败),为 artifacts: reports 创建的产物总是被上传。 您可以使用 artifacts:expire_in 为其产物设置到期日期。

某些 artifacts:reports 类型可以由同一流水线中的多个作业生成,并由每个作业的合并请求或流水线功能使用。

为了能够浏览报告输出文件,请确保包含 artifacts:paths 关键字。

note 不支持使用子流水线中的产物在父流水线中组合报告。

artifacts:reports:accessibility

accessibility 报告使用 pa11y,报告合并请求中引入的更改对可访问性的影响。

系统可以在合并请求的可访问性部件中,显示一个或多个报告的结果。

artifacts:reports:annotations

  • 引入于极狐GitLab 16.3。

annotations 报告用于将辅助数据附加到作业。

注释报告是一个具有注释部分的 JSON 文件。每个注释部分可以具有任何所需的名称,并且可以具有相同或不同类型的任意数量的注释。

Each annotation is a single key (the annotation type), containing the subkeys with the data for that annotation.

注释类型

external_link 注释可以附加到作业,以向作业输出页面添加链接。external_link 注释的值是一个对象,具有以下键:

描述
label 与链接相关联的人可阅读的标签。
url 链接指向的 URL。

示例报告

以下是一个作业注释报告可能是什么样子的示例:

{
  "my_annotation_section_1": [
    {
      "external_link": {
        "label": "URL 1",
        "url": "https://url1.example.com/"
      }
    },
    {
      "external_link": {
        "label": "URL 2",
        "url": "https://url2.example.com/"
      }
    }
  ]
}

artifacts:reports:api_fuzzing

api_fuzzing 报告收集了 API Fuzzing bug 作为产物。

系统可以在以下位置显示一个或多个报告的结果:

artifacts:reports:browser_performance

browser_performance 报告收集浏览器性能测试指标作为产物。此产物是一个由 Sitespeed 插件输出的 JSON 文件。

极狐GitLab 可以在合并请求浏览器性能测试小部件中显示一份报告的结果。

极狐GitLab 无法显示多个 browser_performance 报告的组合结果。

artifacts:reports:coverage_report

使用 coverage_report 收集 Cobertura 格式的覆盖率报告。

cobertura 报告收集 Cobertura 覆盖率 XML 文件

Cobertura 最初是为 Java 开发的,但有许多第三方端口可用于其他语言,例如 JavaScript、Python 和 Ruby。

artifacts:
  reports:
    coverage_report:
      coverage_format: cobertura
      path: coverage/cobertura-coverage.xml

收集的覆盖率报告作为产物上传到极狐GitLab。

系统可以在合并请求差异注释中显示覆盖率报告的结果。

artifacts:reports:codequality

codequality 报告收集代码质量问题。收集的代码质量报告作为产物上传到极狐GitLab。

系统可以显示一个或多个报告:

artifacts:expire_in的值设为 1 week

artifacts:reports:container_scanning

container_scanning 报告收集了容器扫描漏洞。 收集的容器扫描报告作为产物上传到极狐GitLab。

系统可以在以下位置显示一个或多个报告的结果:

artifacts:reports:coverage_fuzzing

coverage_fuzzing 报告收集了 coverage fuzzing bug。收集到的覆盖率模糊测试报告作为产物上传到极狐GitLab。系统可以在以下位置显示一个或多个报告的结果:

artifacts:reports:cyclonedx

  • 引入于 15.3 版本。

本报告是一份软件材料清单,描述了遵循 CycloneDX 协议格式的项目组件。

您可以为每个作业指定多个 CycloneDX 报告,可以作为文件名列表、文件名样式提供:

  • 文件名样式(cyclonedx: gl-sbom-*.jsonjunit: test-results/**/*.json)。
  • 文件名数组(cyclonedx: [gl-sbom-npm-npm.cdx.json, gl-sbom-bundler-gem.cdx.json])。
  • 两者的组合(cyclonedx: [gl-sbom-*.json, my-cyclonedx.json])。
  • 不支持目录(cyclonedx: test-resultscyclonedx: test-results/**)。

以下是公开 CycloneDX 产物的作业示例:

artifacts:
  reports:
    cyclonedx:
      - gl-sbom-npm-npm.cdx.json
      - gl-sbom-bundler-gem.cdx.json

artifacts:reports:dast

dast 报告收集 DAST 漏洞。收集的 DAST 报告作为产物上传到极狐GitLab。

系统可以在以下位置显示一个或多个报告的结果:

artifacts:reports:dependency_scanning

dependency_scanning` 报告收集依赖扫描漏洞。 收集的依赖扫描报告作为产物上传到极狐GitLab。

系统可以在以下位置显示一个或多个报告的结果:

artifacts:reports:dotenv

dotenv 报告收集一组环境变量作为产物。

收集的变量被注册为作业的运行时创建的变量,您可以使用它来在作业完成后设置动态环境 URL

如果 dotenv 报告中存在重复的环境变量:

原始 dotenv 规则的例外是:

  • 变量键只能包含字母、数字和下划线 (_)。
  • .env 文件的最大大小为 5 KB。此限制可以在私有化部署版实例上更改
  • 在 SaaS 版上继承变量的最大数量:基础版为 50,专业版为 100,旗舰版为 150。在私有化部署版上的默认值为 150,可以通过更改 dotenv_variables 应用程序限制来更改。
  • 不支持 .env 文件中的变量替换。
  • .env 文件中的多行值不受支持。
  • .env 文件不能有空行或注释(以 # 开头)。
  • env 文件中的键值不能包含空格或换行符 (\n),包括使用单引号或双引号时。
  • 不支持解析期间的引号转义 (key = 'value' -> {key: "value"})。
  • 支持 UTF-8 编码。

artifacts:reports:junit

junit 报告收集 JUnit 报告格式 XML 文件。 收集的单元测试报告作为产物上传到极狐GitLab。尽管 JUnit 最初是用 Java 开发的,但有许多第三方端口可用于其他语言,例如 JavaScript、Python 和 Ruby。

有关更多详细信息和示例,请参阅单元测试报告。 下面是从 Ruby 的 RSpec 测试工具收集 JUnit 报告格式 XML 文件的示例:

rspec:
  stage: test
  script:
    - bundle install
    - rspec --format RspecJunitFormatter --out rspec.xml
  artifacts:
    reports:
      junit: rspec.xml

极狐GitLab 可以在以下位置显示一个或多个报告的结果:

一些 JUnit 工具导出到多个 XML 文件。您可以在单个作业中指定多个测试报告路径,以将它们连接到单个文件中,使用以下方式之一:

  • 文件名模式(junit: rspec-*.xmljunit: test-results/**/*.xml)。
  • 文件名数组(junit: [rspec-1.xml, rspec-2.xml, rspec-3.xml])。
  • 两者的组合(junit: [rspec.xml, test-results/TEST-*.xml])。
  • 不支持目录(junit: test-resultsjunit: test-results/**)。

artifacts:reports:load_performance

load_performance 报告收集负载性能测试指标。 该报告作为产物上传到极狐GitLab。

系统只能在合并请求负载测试小部件中显示一份报告的结果。

系统无法显示多个 load_performance 报告的组合结果。

artifacts:reports:metrics

metrics 报告收集指标。收集的 Metrics 报告作为产物上传到极狐GitLab。

系统可以在合并请求指标报告小部件中显示一个或多个报告的结果。

artifacts:reports:requirements

requirements 报告收集 requirements.json 文件。收集的需求报告作为产物上传到极狐GitLab,现有的需求被标记为满意。

系统可以在项目需求中显示一份或多份报告的结果。

artifacts:reports:repository_xray

  • 引入极狐GitLab 16.7。

repository_xray 报告收集有关您仓库的信息,供 GitLab Duo Code Suggestions 使用。收集的 repository_xray 报告作为产物上传到极狐GitLab。

caution 此功能在极狐GitLab 17.6 中已弃用并计划在 18.0 中被移除。取而代之的是启用仓库的 X-Ray

artifacts:reports:sast

sast 报告收集SAST 漏洞。收集到的 SAST 报告作为产物上传到极狐GitLab。

更多详情,可查阅:

artifacts:reports:secret_detection

secret-detection 报告收集检测到的 secrets。 收集到的 Secret Detection 报告上传到极狐GitLab。

系统可以在以下位置显示一个或多个报告的结果:

artifacts:reports:terraform

terraform 报告包含 OpenTofu tfplan.json 文件。JQ 处理需要删除凭据。收集到的 OpenTofu 计划报告作为产物上传到极狐GitLab。

极狐GitLab 可以在合并请求 OpenTofu 小部件中显示一份或多份报告的结果。

更多详情,可查阅输出 tofu plan 信息到合并请求