GitLab CI/CDアーティファクトレポートの種類

artifacts:reports

  • テストレポート、コード品質レポート、セキュリティレポート、および、ジョブに含まれるテンプレートによって生成されたその他のアーティファクトを収集します。
  • これらのレポートの中には、情報を表示するために使用されるものもあります:

artifacts: reports 用に作成されたアーティファクトは、ジョブの結果(成功または失敗)に関係なく、常にアップロードされます。artifacts:expire_in を使用して、アーティファクトの有効期限を設定できます。

いくつかのartifacts:reports タイプは、同じパイプライン内の複数のジョブによって生成され、各ジョブからのマージリクエストまたはパイプライン機能によって使用されます。

レポート出力ファイルを参照するには、ジョブ定義にartifacts:paths キーワードが含まれていることを確認してください。

note
子パイプラインのアーティファクトを使用して親パイプラインでレポートを結合することはサポートされていません。このイシューでサポート追加の進捗を追跡してください。

artifacts:reports:accessibility

GitLab 12.8で導入されました

accessibility レポートはpa11yを使ってマージリクエストで導入された変更のアクセシビリティへの影響をレポートします。

GitLabはマージリクエストアクセシビリティウィジェットに一つ以上のレポートの結果を表示することができます。

詳しくはアクセシビリティテストをご覧ください。

artifacts:reports:annotations

GitLab 16.3 で導入されました

annotations レポートは、ジョブに補助データを添付するために使用されます。

注釈レポートは、注釈セクションを含むJSONファイルです。各注釈セクションには任意の名前を付けることができ、同じまたは異なるタイプの注釈をいくつでも付けることができます。

各注釈は 1 つのキー (注釈タイプ) で、その注釈のデータを含むサブキーを含みます。

注釈タイプ

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

  • GitLab 13.4で導入されました。
  • GitLab Runner 13.4 以降が必要です。

api_fuzzing レポートはAPI Fuzzing のバグをアーティファクトとして収集します。

GitLabは1つ以上のレポートの結果を表示することができます:

artifacts:reports:browser_performance

GitLab 14.0でartifacts:reports:performance

browser_performance レポートはアーティファクトとしてブラウザパフォーマンステストのメトリクスを収集します。

GitLabはマージリクエストのブラウザパフォーマンステストウィジェットに1つのレポートの結果を表示することができます。

GitLabは複数のbrowser_performance レポートの結合結果を表示することはできません。

artifacts:reports:coverage_report

GitLab 14.10で導入されました

カバレッジレポートをCoberturaフォーマットで収集するにはcoverage_report

cobertura レポートはCobertura カバレッジ XML ファイルを収集します。

Coberturaは元々Java用に開発されましたが、JavaScript、Python、Rubyなど他の言語用に多くのサードパーティが移植しています。

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

収集されたカバレッジレポートはアーティファクトとして GitLab にアップロードされます。1つのジョブにつき1つのレポートしか使用できません。

GitLabはマージリクエストの差分アノテーションにカバレッジレポートの結果を表示することができます。

artifacts:reports:codequality

  • 13.2でGitLab Freeに移動しました。
  • 15.7でdiffアノテーションとフルパイプラインレポートで複数のレポーターをサポート。

codequality レポートはコード品質のイシューを収集します。収集されたコード品質レポートはアーティファクトとして GitLab にアップロードされます。

GitLabは1つ以上のレポートの結果を表示することができます:

artifacts:reports:container_scanning

container_scanning レポートはコンテナスキャン脆弱性を収集します。収集されたコンテナスキャニングレポートはアーティファクトとしてGitLabにアップロードされます。

GitLabは1つ以上のレポートの結果を表示することができます:

artifacts:reports:coverage_fuzzing

  • GitLab 13.4で導入されました。
  • GitLab Runner 13.4 以降が必要です。

coverage_fuzzing レポートはカバレッジファジングバグを収集します。収集されたカバレッジファジングレポートはアーティファクトとしてGitLabにアップロードされます。GitLabは1つ以上のレポートの結果を表示することができます:

artifacts:reports:cyclonedx

GitLab 15.3 で導入されました

このレポートは、CycloneDXプロトコルフォーマットに従ってプロジェクトのコンポーネントを記述したソフトウェア部品表です。

ジョブごとに複数のCycloneDXレポートを指定できます。これらは、ファイル名のリスト、ファイル名パターン、またはその両方で指定できます:

  • ファイル名パターン (cyclonedx: gl-sbom-*.json,junit: 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-results,cyclonedx: 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にアップロードされます。

GitLabは1つ以上のレポートの結果を表示することができます:

artifacts:reports:dependency_scanning

dependency_scanning レポートは、依存性スキャニングの脆弱性を収集します。収集された Dependency Scanning レポートは GitLab にアーティファクトとしてアップロードされます。

GitLabは1つ以上のレポートの結果を表示することができます:

artifacts:reports:dotenv

GitLab 12.9で導入されました

dotenv レポートは環境変数のセットをアーティファクトとして収集します。

収集された変数はジョブの実行時に作成される変数として登録され、ジョブ終了後に動的な環境URLを設定するために使用できます。

dotenv レポートに重複した環境変数が存在する場合:

  • GitLab 14.6以降では、最後に指定されたものが使用されます。
  • GitLab 14.5以前ではエラーが発生します。

本来のdotenvルールの例外は以下の通りです:

  • 変数キーにはアルファベット、数字、アンダースコア (_) のみを使用できます。
  • .env ファイルの最大サイズは 5 KB です。この制限はセルフマネージド・インスタンスで変更できます。
  • GitLab.com では、継承される変数の最大数は Free で 50、Premium で 100、Ultimate で 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は1つ以上のレポートの結果を表示することができます:

JUnit ツールの中には、複数の XML ファイルにエクスポートするものがあります。1 つのジョブで複数のテストレポートパスを指定し、それらを 1 つのファイルに連結することができます。どちらかを使用します:

  • ファイル名パターン (junit: rspec-*.xml,junit: test-results/**/*.xml).
  • ファイル名の配列 (junit: [rspec-1.xml, rspec-2.xml, rspec-3.xml])。
  • 両方の組み合わせ (junit: [rspec.xml, test-results/TEST-*.xml])。
  • ディレクトリはサポートされていません(junit: test-results,junit: test-results/**)。

artifacts:reports:license_scanning

GitLab 12.8 で導入されました。

ライセンススキャンレポートはGitLab 15.9で非推奨となり、GitLab 16.3で削除されました。代わりに、ライセンス承認ポリシーと 新しいライセンススキャン方法を使うようにマイグレーションしてください。

artifacts:reports:load_performance

load_performance レポートはロードパフォーマンステストのメトリクスを収集します。レポートはアーティファクトとして GitLab にアップロードされます。

GitLabはマージリクエストロードテストウィジェットに1つのレポートの結果だけを表示することができます。

GitLabは複数のload_performance レポートの結合結果を表示することはできません。

artifacts:reports:metrics

metrics レポートはメトリクスを収集します。収集されたメトリクスレポートはアーティファクトとしてGitLabにアップロードされます。

GitLabはマージリクエストメトリクスレポートウィジェットに1つ以上のレポートの結果を表示することができます。

artifacts:reports:requirements

GitLab 13.1で導入されました。

requirements レポートはrequirements.json ファイルを収集します。収集された要件レポートはアーティファクトとして GitLab にアップロードされ、既存の要件はSatisfied としてマークされます。

GitLab は、プロジェクト要件に 1 つ以上のレポートの結果を表示できます。

artifacts:reports:sast

13.3でGitLab UltimateからGitLab Freeに移行しました。

sast レポートはSAST 脆弱性を収集します。収集されたSASTレポートはアーティファクトとしてGitLabにアップロードされます。

GitLabは1つ以上のレポートの結果を表示することができます:

artifacts:reports:secret_detection

  • GitLab 13.1 で導入されました。
  • 13.3でGitLab Freeに移行
  • GitLab Runner 11.5 以上が必要です。

secret-detection レポートは検出されたシークレットを収集します。収集されたシークレット検出レポートはGitLabにアップロードされます。

GitLabは1つ以上のレポートの結果を表示することができます:

artifacts:reports:terraform

terraform レポートは Terraformtfplan.json ファイルを取得します。クレデンシャルを削除するためにJQ処理が必要。収集されたTerraformプランレポートはアーティファクトとしてGitLabにアップロードされます。

GitLabは1つ以上のレポートの結果をマージリクエストTerraformウィジェットに表示することができます。

詳しくは、 terraform plan の情報をマージリクエストに出力する を参照してください。