GitLab Auto-mergeを試す
今回はGitLabのAuto-mergeを簡単に紹介します。
背景
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パイプラインの成功を設定してみます。
この設定はGitLabの 設定 → マージリクエスト から マージチェック の項目に移動し、 パイプラインは成功しなければなりません を選択します。

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

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