ダウンストリームパイプラインのトラブルシューティング
トリガージョブが失敗し、マルチプロジェクトパイプラインが作成されない
マルチプロジェクトパイプラインでは、トリガージョブが失敗し、次の場合にダウンストリームパイプラインが作成されません:
- ダウンストリームプロジェクトが見つからない。
- アップストリームパイプラインを作成するユーザーに、ダウンストリームプロジェクトでパイプラインを作成するpermissionがありません。
- ダウンストリームパイプラインが保護ブランチをターゲットにしており、ユーザーがその保護ブランチに対してパイプラインを実行する権限を持っていません。詳しくは、保護ブランチのパイプラインセキュリティをご覧ください。
ダウンストリームプロジェクトで権限の問題が発生しているユーザーを特定するには、Railsコンソールで次のコマンドを使用してトリガージョブを確認し、user_id属性を確認します。
Ci::Bridge.find(<job_id>)子パイプラインのジョブがパイプラインの実行時に作成されない
親パイプラインがマージリクエストパイプラインの場合、子パイプラインは、workflow:rulesまたはrulesを使用して、ジョブが確実に実行されるようにする必要があります。
rules設定が不足しているか、正しくないために、子パイプラインで実行できるジョブがない場合:
- 子パイプラインが開始に失敗します。
- 親パイプラインのトリガージョブが次のように失敗します:
downstream pipeline can not be created, the resulting pipeline would have been empty. Review therulesconfiguration for the relevant jobs.
$文字を含む変数がダウンストリームパイプラインに正しく渡されない
CI/CD変数をダウンストリームパイプラインに渡す場合、$$を使用してCI/CD変数内の$文字をエスケープすることはできません。ダウンストリームパイプラインは引き続き$を変数参照の開始として扱います。
UIで変数を設定する際にCI/CD変数の展開を防止するか、variables:expandキーワードを使用して、変数の値が展開されないように設定できます。これにより、$が変数参照として解釈されずに、変数をダウンストリームパイプラインに渡すことができます。
Ref is ambiguous
同じ名前のブランチが存在する場合、タグを使用してマルチプロジェクトパイプラインをトリガーすることはできません。ダウンストリームパイプラインの作成に失敗し、次のエラーが発生します: downstream pipeline can not be created, Ref is ambiguous。
ブランチ名と一致しないタグ名でマルチプロジェクトパイプラインのみをトリガーします。
アップストリームパイプラインからジョブのアーティファクトをダウンロードする際の403 Forbiddenエラー
GitLab 15.9以降では、CI/CDジョブトークンは、パイプラインが実行されるプロジェクトをスコープとします。したがって、ダウンストリームパイプライン内のジョブトークンは、デフォルトではアップストリームプロジェクトにアクセスするために使用できません。
これを解決するには、ジョブトークンのスコープ許可リストにダウンストリームプロジェクトを追加します。
エラー: needs:need pipeline should be a string
動的な子パイプラインでneeds:pipeline:jobを使用すると、次のエラーが発生する可能性があります:
Unable to create pipeline
- jobs:<job_name>:needs:need pipeline should be a stringこのエラーは、パイプラインIDが文字列ではなく整数として解析される場合に発生します。これを修正するには、パイプラインIDを引用符で囲みます:
rspec:
needs:
- pipeline: "$UPSTREAM_PIPELINE_ID"
job: dependency-job
artifacts: true