🦊

GitLab CIの親子パイプライン、子パイプラインが成功するまで親パイプラインが成功扱いされないようにする

2022/08/29に公開

何に困ったの?

  • GitLab CIの親子パイプライン(Parent-child pipelines)はとても便利だけど、親からトリガーされた子パイプライン(Downstream)の成否に関係なく、親パイプラインが成功したように見えてしまう

    • 子パイプラインが実行中 or 失敗した場合でもパイプライン一覧ではStatus: Passedになってしまう
    • 成功しているように見せかけて
    • 子パイプラインは実行中(=まだ実行結果が出ていない)だったりする
  • この状態で「パイプラインは実行完了&成功している」とみなされてしまうため、マージリクエストの「パイプライン成功時にマージ」設定も機能しなくなり、子パイプラインが問題を検知して失敗していてもマージできてしまう

解決方法

pipeline-test:
  stage: pipeline-test
  trigger:
    include: child_pipeline.yml
    strategy: depend
  • こうすると子パイプラインのステータスが親パイプラインに反映されるようになる

何で書いたの?

  • ぱぱっと日本語の情報が見つからなかったから
  • 半分余談だけどGitLabのドキュメントは何でも書いてある良いドキュメント。ただ情報量が多いので「ここに全てが書いてある!」という確信を得られるまでは読み込むのが辛かった。のでドキュメントへのポインタを残すことにした

Discussion