LoginSignup
18
11

More than 5 years have passed since last update.

GitLabのMerge Requestの制御(Build Succeeds, Discussion Resolution, WIP)

Last updated at Posted at 2016-12-12

GitLabのMerge Requestを少し制御してみる

GitLabではMergeRequestの受入に幾つか設定があります。

今回は簡単に制御出来る3つの方法について確認します。
1. Merge When Build Succeeds(ビルドが通らなければMergeを許可しない)
2. Merge Request discussion resolution(discussionが解決しなければMergeを許可しない)
3. "Work In Progress" Merge RequestsWIP:をタイトルから消さないかぎり許可しない)

1.Merge When Build Succeeds

名前の通りビルドが成功しない限りMergeの許可を出来ないようにする方法です。
プロジェクトの設定ページ(Edit Project)からOnly allow merge requests to be merged if the build succeedsのチェックボックスを入れ、保存(Save changes)するだけです。

確認してみましょう。

Hello worldが書いていれば成功する.gitlab-ci.ymlを書きます
1.png

masterブランチにはHello world
2.png

Hello worldがないdelworldというブランチを作成します。
3.png

この状態のビルドの状態はdelworldというブランチはfailedになっています。
4.png

masterへのMerge Requestを作ると赤くはなっていますがAccept Merge Requestを押せますね。
5.png

ここでEdit Project -> Only allow merge requests to be merged if the build succeedsのチェックボックスを入れ、Save changesします。
6.png

Merge Requestの画面に戻るとThe build for this merge request failedになり、Mergeの許可を制御しています。
7.png

2.Merge Request discussion resolution

名前の通りディスカッションが解決しない限りMergeの許可を出来ないようにする方法です。
プロジェクトの設定ページ(Edit Project)からOnly allow merge requests to be merged if all discussions are resolvedのチェックボックスを入れ、保存(Save changes)するだけです。

デフォルトの状態だとコメントがあってもAccept Merge Requestは押せます。
11.png

ここでEdit Project -> Only allow merge requests to be merged if all discussions are resolvedのチェックボックスを入れ、Save changes
12.png

するとThis merge request has unresolved discussionsになり、Mergeの許可を制御しています。
13.png

Mergeをできるようにするには各コメントにたいしてすべて丸チェックを押下します。
14.png

すべてチェックを入れるとx/x discussion resolovedのチェックがされます。
15.png

そして画面をリロードするとMerge Requestをすることができます。
16.png

3."Work In Progress" Merge Requests

[WIP]またはWIP:Merge Requestのタイトルに入力するだけです。

Merge RequestのタイトルにWIP:または[WIP]を入れます。
21.png
22.png

This merge request is currently a Work In Progressというメッセージが表示されMergeを制御しています。
23.png

24.png

Mergeをさせるには先程のタイトルに先頭に入力したWIP:または[WIP]を削除します。
25.png
26.png

タイトルを変更したらMerge Requestをすることができます。
27.png
28.png

最後

いかがだったでしょうか、これらの機能はGitLab上での話ですので、いくら制御してもローカルでMergeしてPushは可能です。確認はローカルで行い、Merge自体はGitLabのMerge Request上で行うと、ルール作りも楽になるのではないでしょうか?

非常に簡単な説明ですが以上です。

追記

Protected BranchesでbranchごとにMerge Requestの制御ができるみたいです。

hiroponzさんありがとうございます。

18
11
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
11