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注釈をジョブにアタッチして、ジョブ出力ページにリンクを追加できます。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-*.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.jsonartifacts: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の実装の両方を超える追加の制限を適用します。
ファイルサイズと変数の制限:
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)は削除されます。 - 複雑な値(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.xmlGitLabは、単一または複数のレポートの結果を以下で表示できます。
- マージリクエストテストのサマリーパネル。
- パイプラインのテストタブ。
JUnitツールによっては、複数のXMLファイルにエクスポートできます。単一のジョブで複数のテストレポートパスを指定して、それらを単一のファイルに連結できます。以下のいずれかを使用します。
- ファイル名のパターン(
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: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情報をマージリクエストに出力するを参照してください。