パイプラインが成功したらマージ

マージ準備が整っているように見えるが、まだ1つ以上の CI ジョブが実行されているマージリクエストをレビューするとき、ジョブパイプラインが成功したときに自動的にマージされるように設定できます。 この方法では、ジョブの終了を待つ必要がなく、手動でマージすることを忘れないでください。

Enable

どのように動作するか

パイプラインが成功したらマージ” ボタンを押すと、マージリクエストのステータスが更新され、マージが間近に迫っていることが示されます。 パイプラインの成功を待つことができず、すぐにマージしたい場合、このオプションはメインボタンの右側にあるドロップダウンメニューで利用できます。

チームの開発者とマージリクエストの作成者の両方は、マージすべきでない理由が見つかった場合、自動マージをキャンセルするオプションを持っています。

Status

パイプラインが成功すると、マージリクエストは自動的にマージされます。 パイプラインが失敗すると、作成者は失敗したジョブを再試行するか、失敗を修正するために新しいコミットをプッシュするチャンスを得ます。

ジョブが再試行され2回目で成功すると、マージリクエストは自動的にマージされます。 マージリクエストが新しいコミットで更新されると、新しい変更をレビューするために自動マージは自動的にキャンセルされます。

パイプラインが成功した場合のみ、マージリクエストを許可します。

パイプラインが成功しなかったり、解決すべきスレッドがある場合、マージリクエストがマージされないようにすることができます。 これは両方に有効です:

  • GitLab CI/CDパイプライン
  • 外部のCIインテグレーションから実行されるパイプライン

その結果、GitLab CI/CDパイプラインを無効にしても、この機能は無効になりません。 この機能で外部のCIプロバイダのパイプラインを使用することは可能だからです。 有効にするには、次のことが必要です:

  1. プロジェクトのSettings > Generalページに移動します。
  2. マージリクエストセクションを展開します。
  3. Merge checksサブセクションで、Pipelines must succeedチェックボックスを選択します。
  4. Saveを押して変更を有効にします。
注意:この設定により、パイプラインがない場合にマージリクエストがマージされることもなくなります。

Pipelines must succeed settings

今後、パイプラインが失敗するたびに、関連するすべてのジョブをパスするまで、UIからマージリクエストをマージすることはできません。

Only allow merge if pipeline succeeds message

パイプラインのスキップ

GitLab 13.1で導入されました。

パイプラインを成功させる必要がある] チェックボックスをオンにすると、スキップされたパイプラインによってマージリクエストがマージされなくなります。 この動作を変更するには、[パイプラインを成功させる必要がある] チェックボックスをオンにします:

  1. プロジェクトのSettings > Generalページに移動します。
  2. マージリクエストセクションを展開します。
  3. Merge checksサブセクションで、Pipelines must succeedがチェックされていることを確認します。
  4. Merge checksサブセクションで、Skipped pipelines are considered successfulチェックボックスを選択します。
  5. Saveを押して変更を有効にします。

制限事項

この設定を有効にすると、パイプラインがない場合、マージリクエストはマージされません。これは、only/except ルールが使用され、パイプラインを生成しない使用例と競合する可能性があります。

このシナリオでマージリクエストをマージできることを期待するユーザーは、常にパイプラインが存在し、それが成功することを確認する必要があります。

例えば、only/except のルールで他のジョブが生成されなくても、マージリクエストには常に通過するジョブが存在します:

enable_merge:
  only: [merge_requests]
  script:
    - echo true

コマンドラインから使用

プッシュオプションを使って、プッシュ時にこの機能をトリガーすることができます。