てくなべ (tekunabe)

ansible / network automation / 学習メモ

[GitLab] CI が成功しないと Merge できないようにする

はじめに

GitLab には GitLab CI という機能があり、git push のような更新のタイミングで CI を実行できます。

デフォルトでは、マージリクエストの画面で CI の成功/失敗に関わらず Merge ボタンが押せます。

柔軟といえば柔軟ですが、厳密にしたい場合は少し不安が残るかもしれません。

そこで、この記事では CI が成功しないと Merge できないようにする設定を紹介します。

  • 動作確認環境
    • gitlab.com (GitLab Enterprise Edition 13.11.0-pre)

デフォルトでは CI 失敗時でも Merge 可

比較のため、デフォルトの挙動を説明します。

以下のように、CI に失敗しても Merge ボタン自体は押せるようになっています。

f:id:akira6592:20210420222627p:plain
デフォルトではCI失敗時でも Merge できる

CI が成功しないと Merge できないようにする

CI が成功しないと Merge できないようにするには設定変更が必要です。

設定変更

プロジェクトの Setting > General 画面を開きます。

f:id:akira6592:20210420222709p:plain:w300
Setting > General

Merge requests セクションの Expand をクリックして設定項目を開きます。

f:id:akira6592:20210420222744p:plain
Merge requests セクションの Expand

Pipelines must succeed にチェックを入れて、Save change をクリックします。

f:id:akira6592:20210420222831p:plain
Pipelines must succeed にチェック

これで設定変更は完了です。

動作確認

以下のように、CI 失敗次は Merge ボタンが押せないようになります。

f:id:akira6592:20210420222907p:plain
CI 失敗時は Merge できないようになった

参考

docs.gitlab.com