TECHSTEP

ITインフラ関連の記事を公開してます。

GitLab Auto-mergeを試す

今回はGitLabのAuto-mergeを簡単に紹介します。

docs.gitlab.com

背景

Auto-mergeは、Merge requestがマージ可能な状態になったときに自動的にマージする機能です。ここでいう「マージ可能な状態」とは、以下のような条件を満たした場合を指します。

  • 要求するApproveをすべて完了していること
  • 他のMerge requestがブロックしていないこと
  • コンフリクトが存在しないこと
  • CI/CDパイプラインが成功していること
  • Merge request中のDiscussionをすべて解決していること
  • Merge reuestがドラフトでないこと

Merge request画面からAuto-mergeを設定しておき、すべての条件を満たすと、自動的にマージされます。

なおAuto-mergeを利用するには、以下の条件を満たす必要があります。 * Developer以上のRoleを付与していること * Merge requestのすべてのスレッドを解決していること ・要求する全てのApprovalを得ていること

検証

今回は簡単にAuto-merge機能を使ってみます。

ここではテスト用のProjectを用意し、Merge requestを作成します。なお事前に .gitlab-ci.yml を作成していないとAuto-mergeは設定できません。

.gitlab-ci.yml を作成してパイプラインが起動すると、 自動マージに設定 という項目が表示されます。

自動マージに設定 を選択すると、以下のようにAuto-mergeが設定されます。

パイプラインが成功すると自動的にマージされる様子を確認できます。

次にMerge requestをマージする条件としてCI/CDパイプラインの成功を設定してみます。

docs.gitlab.com

この設定はGitLabの 設定マージリクエスト から マージチェック の項目に移動し、 パイプラインは成功しなければなりません を選択します。

この設定を有効にしてMerge requestを作成すると、以下のようにマージがブロックされていることが分かります。

この状態でAuto-mergeを設定しても以下のようにマージはブロックされており、CI/CDパイプラインが失敗した場合はマージされないことも確認できます。