正式なドキュメントは英語版であり、この日本語訳は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

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

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

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

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

artifacts:reports:dotenv

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

収集された変数は、ジョブのランタイムに作成された変数として登録され、後続のジョブスクリプトで使用したり、ジョブの完了後に動的な環境URLを設定するために使用したりできます。

dotenvレポートに重複する環境変数がある場合、最後に指定された環境変数が使用されます。

レポートはパイプラインの詳細ページからダウンロードできるため、認証情報などの機密データをdotenvレポートに保存することは避ける必要があります。必要に応じて、artifacts:accessを使用して、ジョブのレポートアーティファクトをダウンロードできるユーザーを制限できます。

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

  • dotenvファイルの最大サイズは5 KBです。この制限は、GitLab Self-Managedでは変更可能です。
  • GitLab.comで継承される変数の最大数は、Freeでは50、Premiumでは100、Ultimateでは150です。GitLab Self-Managedのデフォルトは20で、dotenv_variables アプリケーション制限を変更することで、この条件は変更できます。
  • UTF-8エンコードのみがサポートされています
  • dotenvファイルに、空行またはコメント(#で始まる)を含めることはできません。
  • 変数名には、ASCII文字(A-Za-z)、数字(0-9)、アンダースコア(_)のみを含めることができます。
  • dotenvファイルは引用符をサポートしていません。単一引用符または二重引用符はそのまま保持され、エスケープには使用できません。
    • ファイルでの複数行の値はサポートされていません。GitLabは、アップロード時にdotenvファイルを拒否します。
    • 先頭と末尾のスペースまたは改行文字(\n)は削除されます。
  • ${var}ファイルでの変数の代入はサポートされていません。GitLabは、ファイルの処理時に、変数置換を空の文字列に解決します。

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情報をマージリクエストに出力するを参照してください。