マージリクエストパイプラインのトラブルシューティング
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
マージリクエストのマージリクエストパイプラインの操作中に、次のイシューが発生する可能性があります。
ブランチにプッシュする際の2つのパイプライン
マージリクエストでパイプラインが重複する場合、パイプラインがブランチとマージリクエストの両方に対して同時に実行されるように設定されている可能性があります。パイプラインの設定を調整して、重複するパイプラインを回避してください。
workflow:rulesを追加して、ブランチのパイプラインからマージリクエストパイプラインにスイッチすることができます。ブランチでマージリクエストを開くと、パイプラインがマージリクエストパイプラインにスイッチします。
無効なCI/CD設定ファイルをプッシュする際の2つのパイプライン
無効なCI/CD設定をマージリクエストのブランチにプッシュすると、失敗した2つのパイプラインがパイプラインタブに表示されます。1つのパイプラインは失敗したブランチパイプラインであり、もう1つは失敗したマージリクエストパイプラインです。
設定の構文が修正されると、それ以上失敗したパイプラインは表示されません。設定の問題を特定して修正するには、以下を使用できます:
マージリクエストのパイプラインが失敗としてマークされているが、最新のパイプラインは成功しました
単一のマージリクエストのパイプラインタブに、ブランチパイプラインとマージリクエストパイプラインの両方を含めることができます。これは、設定によるか、事故による可能性があります。
プロジェクトでパイプラインが完了しているが有効になっており、両方のパイプラインタイプが存在する場合、ブランチパイプラインではなく、マージリクエストパイプラインがチェックされます。
したがって、マージリクエストパイプラインの結果は、merge request pipeline(マージリクエストパイプライン)が失敗した場合、branch pipeline(ブランチパイプライン)の結果とは関係なく、失敗としてマークされます。
ただし、次の点に注意が必要です:
- これらの条件は強制されません。
- 競合状態によって、どのパイプラインの結果を使用してマージリクエストをブロックまたは追跡するかが決まります。
このバグは、イシュー384927で追跡されます。
An error occurred while trying to run a new pipeline for this merge request.
このエラーは、マージリクエストでパイプラインの実行を選択しても、プロジェクトでマージリクエストパイプラインが有効になっていない場合に発生する可能性があります。
このエラーメッセージの原因として考えられるのは、次のとおりです:
プロジェクトでマージリクエストパイプラインが有効になっておらず、パイプラインタブにパイプラインがリストされておらず、Run pipelines(パイプラインの実行)を選択した場合。
プロジェクトで以前はマージリクエストパイプラインが有効になっていたものの、設定が削除された。例:
- マージリクエストの作成時に、プロジェクトの
.gitlab-ci.yml設定ファイルでマージリクエストパイプラインが有効になっている。 - パイプラインの実行オプションは、マージリクエストのパイプラインタブで使用でき、この時点でパイプラインの実行を選択しても、エラーは発生しない可能性があります。
- プロジェクトの
.gitlab-ci.ymlファイルが変更され、マージリクエストパイプラインの設定が削除された。 - 更新された設定をマージリクエストに取り込むために、ブランチがリベースされました。
- これで、パイプラインの設定はマージリクエストパイプラインをサポートしなくなりましたが、パイプラインの実行を選択してマージリクエストパイプラインを実行します。
- マージリクエストの作成時に、プロジェクトの
パイプラインの実行が使用可能であっても、プロジェクトでマージリクエストパイプラインが有効になっていない場合は、このオプションを使用しないでください。コミットをプッシュするか、ブランチをリベースして、新しいブランチパイプラインをトリガーできます。
Merge blocked: pipeline must succeed. Push a new commit that fixes the failureメッセージ
このメッセージは、マージリクエストパイプライン、マージ結果パイプライン 、またはマージトレインパイプラインが失敗またはキャンセルされた場合に表示されます。これは、ブランチパイプラインが失敗した場合には発生しません。
マージリクエストパイプラインまたはマージ結果パイプラインがキャンセルまたは失敗した場合、次のことができます:
- マージリクエストのパイプラインタブでパイプラインの実行を選択して、パイプライン全体を再実行します。
- 失敗したジョブのみをリトライする。パイプライン全体を再実行する場合、これは必要ありません。
- 新しいコミットをプッシュして、失敗を修正します。
マージトレインパイプラインが失敗した場合、次のことができます:
- 失敗を確認し、
/mergeクイックアクションを使用して、マージリクエストをすぐにトレインに再度追加できるかどうかを判断します。 - マージリクエストのパイプラインタブでパイプラインの実行を選択してパイプライン全体を再実行し、マージリクエストをトレインに再度追加します。
- コミットをプッシュして失敗を修正し、マージリクエストをトレインに再度追加します。
マージトレインパイプラインがマージリクエストのマージ前にキャンセルされた場合、失敗がなければ、次のことができます:
- トレインに再度追加します。