- ジョブが特定のアーティファクトを取得しない
- ジョブ・アーティファクトのディスク容量が多すぎます。
- エラーメッセージ
No files to upload
- エラーメッセージ
Missing /usr/bin/gitlab-runner-helper. Uploading artifacts is disabled.
- Windowsランナーでdotenvアーティファクトをアップロードする際のエラーメッセージ
FATAL: invalid argument
- ジョブのアーティファクトに期限はありません。
-
エラーメッセージ
This job could not start because it could not retrieve the needed artifacts.
アーティファクトのトラブルシューティング
ジョブ・アーティファクトを操作していると、次のようなイシューに遭遇することがあります。
ジョブが特定のアーティファクトを取得しない
デフォルトでは、ジョブは以前のステージからすべての成果物を取得しますが、dependencies
またはneeds
を使用するジョブは、デフォルトではすべてのジョブから成果物を取得しません。
これらのキーワードを使用すると、一部のジョブからのみ成果物がフェッチされます。これらのキーワードを使用してアーティファクトをフェッチする方法については、キーワード・リファレンスをレビューしてください:
ジョブ・アーティファクトのディスク容量が多すぎます。
ジョブ・アーティファクトのディスク容量が多すぎる場合は、ジョブ・アーティファクト管理ドキュメントを参照してください。
エラーメッセージNo files to upload
このメッセージは、Runnerがアップロードするファイルを見つけられない場合にジョブログに表示されます。ファイルへのパスが正しくないか、ファイルが作成されていません。ジョブログで、ファイル名と生成されなかった理由を特定する他のエラーや警告を確認できます。
より詳細なジョブログについては、CI/CD デバッグロギングを有効にしてジョブを再試行できます。このロギングによって、ファイルが生成されなかった理由についての詳細な情報が得られるかもしれません。
エラーメッセージMissing /usr/bin/gitlab-runner-helper. Uploading artifacts is disabled.
GitLab 15.2で導入されたGitLab Runnerは
DEBUG
の代わりにRUNNER_DEBUG
を使用し、このイシューを修正しました。
GitLab 15.1 以前では、DEBUG
という名前の CI/CD 変数を設定するとアーティファクトのアップロードに失敗することがありました。
これを回避するには
- GitLab と GitLab Runner 15.2 にアップデートしてください。
- 別の変数名を使用
-
script
コマンドで環境変数として設定します:failing_test_job: # This job might fail due to issue gitlab-org/gitlab-runner#3068 variables: DEBUG: true script: bin/mycommand artifacts: paths: - bin/results successful_test_job: # This job does not define a CI/CD variable named `DEBUG` and is not affected by the issue script: DEBUG=true bin/mycommand artifacts: paths: - bin/results
Windowsランナーでdotenvアーティファクトをアップロードする際のエラーメッセージFATAL: invalid argument
PowerShellecho
コマンドは UCS-2 LE BOM (Byte Order Mark) エンコードでファイルを書き込みますが、サポートされているのは UTF-8 のみです。echo
でdotenv
アーティファクトを作成しようとすると、FATAL: invalid argument
エラーが発生します。
代わりに、UTF-8 を使用する PowerShellAdd-Content
を使用してください:
test-job:
stage: test
tags:
- windows
script:
- echo "test job"
- Add-Content -Path build.env -Value "MY_ENV_VAR=true"
artifacts:
reports:
dotenv: build.env
ジョブのアーティファクトに期限はありません。
一部のジョブのアーティファクトが期待どおりに期限切れにならない場合は、以下の設定が有効になっているかどうかを確認してください。 最近成功したジョブのアーティファクトを保持設定が有効になっているかどうかを確認します。
この設定が有効な場合、各refの最新の成功したパイプラインからのジョブ・アーティファクトは期限切れにならず、削除されません。
エラーメッセージThis job could not start because it could not retrieve the needed artifacts.
needs:artifacts
キーワードで設定されたジョブは、以下の場合に開始に失敗し、このエラーメッセー ジを返します:
- ジョブの依存関係が見つかりません。
- 権限が不足しているため、ジョブが関連リソースにアクセスできません。
トラブルシューティングの手順はジョブが使用する構文によって異なります:
で設定されたジョブの場合、以下のようになります。needs:project
needs:project
、以下のような設定でジョブを実行した場合、could not retrieve the needed artifacts.
エラーが発生することがあります:
rspec:
needs:
- project: my-group/my-project
job: dependency-job
ref: master
artifacts: true
このエラーをトラブルシューティングするには、以下を確認してください:
- プロジェクト
my-group/my-project
、Premiumサブスクリプションプランを持つグループ内にあります。 - ジョブを実行しているユーザーは、
my-group/my-project
のリソースにアクセスできます。 -
project
、job
、ref
の組み合わせが存在し、望ましい依存関係をもたらします。 - 使用中の変数はすべて正しい値に評価されます。
で設定されたジョブの場合、以下のようになります。needs:pipeline:job
needs:pipeline:job
、以下のような設定でジョブを実行した場合、could not retrieve the needed artifacts.
エラーが発生することがあります:
rspec:
needs:
- pipeline: $UPSTREAM_PIPELINE_ID
job: dependency-job
artifacts: true
このエラーをトラブルシューティングするには、以下を確認してください:
-
$UPSTREAM_PIPELINE_ID
CI/CD変数が現在のパイプラインの親子パイプライン階層で利用可能であること。 -
pipeline
とjob
の組み合わせが存在し、既存のパイプラインに解決されます。 -
dependency-job
が実行され、正常に終了しました。