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