正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

GitLab CI/CDアーティファクトのレポートタイプ

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

artifacts:reportsを使用すると、以下を実行できます。

  • ジョブに含まれるテンプレートで生成されたテストレポート、コード品質レポート、セキュリティレポート、その他のアーティファクトを収集する。
  • 上記レポートの一部を、以下の情報の確認に使用する。

artifacts: reportsのために作成されたアーティファクトは、ジョブの結果(成功または失敗)にかかわらず、常にアップロードされます。artifacts:expire_inを使用すると、アーティファクトの有効期限を設定できます。これにより、インスタンスのデフォルト設定がオーバーライドされます。GitLab.comでは、アーティファクトの有効期限のデフォルト値が異なる場合があります。

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

レポートの出力ファイルを参照するには、ジョブの定義に必ずartifacts:pathsキーワードを含めます。

親パイプラインでの子パイプラインからのアーティファクトを使用した統合レポートはサポートされていません。この機能のサポートは、エピック8205で提案されています。

artifacts:reports:accessibility

accessibilityレポートは、pa11yを使用して、マージリクエストで導入された変更がアクセシビリティに与える影響に関するレポートを作成します。

GitLabは、単一または複数のレポートの結果をマージリクエストのアクセシビリティウィジェットに表示できます。

詳細については、アクセシビリティテストを参照してください。

artifacts:reports:annotations

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

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

各注釈は単一のキー(注釈タイプ)であり、その配下のサブキーに注釈のデータが格納されます。

注釈タイプ

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

  • プラン: Ultimate

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

GitLabは、単一または複数のレポートの結果を以下で表示できます。

artifacts:reports:browser_performance

  • プラン: Premium、Ultimate

browser_performanceレポートは、ブラウザパフォーマンステストのメトリクスをアーティファクトとして収集します。このアーティファクトは、Sitespeedプラグインが出力するJSONファイルです。

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

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

artifacts:reports:coverage_report

coverage_report:を使用して、Cobertura形式またはJaCoCo形式でカバレッジレポートを収集します。

coverage_format:は、coberturaまたはjacocoのいずれかです。

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

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

収集されたカバレッジレポートは、アーティファクトとしてGitLabにアップロードされます。

複数のJaCoCoまたはCoberturaレポートを生成し、ワイルドカードを使用してこれらのレポートを最終的なジョブアーティファクトに含めることができます。レポートの結果は、最終的なカバレッジレポートとして集約されます。

カバレッジレポートの結果は、マージリクエストの差分注釈に表示されます。

子パイプラインからのカバレッジレポートは、マージリクエストの差分注釈に表示されますが、アーティファクト自体は親パイプラインと共有されません。

artifacts:reports:codequality

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

GitLabは、単一または複数のレポートの結果を以下で表示できます。

artifacts:expire_inの値は、1 weekに設定されています。

artifacts:reports:container_scanning

  • プラン: Ultimate

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

GitLabは、単一または複数のレポートの結果を以下で表示できます。

artifacts:reports:coverage_fuzzing

  • プラン: Ultimate

coverage_fuzzingレポートは、カバレッジファジングバグを収集します。収集されたカバレッジファジングレポートは、アーティファクトとしてGitLabにアップロードされます。GitLabは、単一または複数のレポートの結果を以下で表示できます。

artifacts:reports:cyclonedx

  • プラン: Ultimate

このレポートは、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

  • プラン: Ultimate

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

GitLabは、単一または複数のレポートの結果を以下で表示できます。

artifacts:reports:dependency_scanning

  • プラン: Ultimate

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

GitLabは、単一または複数のレポートの結果を以下で表示できます。

artifacts:reports:dotenv

The dotenvレポートは、ファイルから環境変数を収集し、それらをCI/CD変数としてパイプラインの以降のジョブで利用できるようにします。

収集された変数は、後続のジョブスクリプトで使用できる 、または動的な環境URLを設定できるジョブ変数として登録されます。

同じ変数名がdotenvレポートに複数回出現する場合、最後の値が使用されます。

認証情報、APIキー、トークンなどの機密データは、パイプラインユーザーによってアクセスされる可能性があるため、含めないでください。アクセスを制限するには、artifacts:accessを使用します。

GitLabは、dotenvファイルを処理するためにdotenv gemを使用しますが、元のdotenvのルールとgemの実装の両方を超える追加の制限を適用します。

ファイルサイズと変数の制限:

形式の制限:

  • UTF-8エンコードのみがサポートされています
  • dotenvファイルには空行やコメント(#で始まるもの)を含めることはできません。
  • 変数名には、ASCII文字(A-Za-z)、数字(0-9)、およびアンダースコア(_)のみを含めることができます。
  • dotenvファイルはクォーティングをサポートしていません。シングルクォートまたはダブルクォートはそのまま保持され、エスケープには使用できません。
  • 値には、改行やエスケープが必要なその他の特殊文字を含めることはできません。
  • 複数行の値はサポートされていません。GitLabは、dotenvファイルのアップロード時に拒否します。
  • 先頭と末尾のスペース、または改行文字(\n)は削除されます。
  • 複雑な値(JSON、複数行のテキスト)の場合は、別のアーティファクトレポートタイプを使用するか、データを別のファイルアーティファクトに保存してください。

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

  • プラン: Premium、Ultimate

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

GitLabは、単一のレポートの結果のみをマージリクエストのロードテストウィジェットに表示できます。

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

artifacts:reports:metrics

  • プラン: Premium、Ultimate

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

GitLabは、単一または複数のレポートの結果をマージリクエストのメトリクスレポートウィジェットに表示できます。

artifacts:reports:requirements

  • プラン: Ultimate

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

GitLabは、単一または複数のレポートの結果をプロジェクト要件に表示できます。

artifacts:reports:sast

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

詳細については、以下を参照してください。

artifacts:reports:secret_detection

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

GitLabは、単一または複数のレポートの結果を以下で表示できます。

artifacts:reports:terraform

terraformレポートは、OpenTofu tfplan.jsonファイルを取得します。認証情報を削除するにはJQ処理が必要です。収集されたOpenTofuプランレポートは、アーティファクトとしてGitLabにアップロードされます。

GitLabは、単一または複数のレポートの結果をマージリクエストのOpenTofuウィジェットに表示できます。

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