くりにっき

フルスタックキュアエンジニアです

【今月のgem】gitlab_mr_releaseを作った

github.com

gitlab_mr_releaseについて

git flowで開発してる時にマージ済のMergeRequestからいい感じにリリース用のMergeRequestを作るためのgemです

GitHubだと git-pr-release があるのですが、GitLabだとそういうのがなかったので作りました

git-pr-release については下記を参照

使い方

設定ファイル作成

まず gitlab_mr_release init で設定ファイルを作成します

$ gitlab_mr_release init
      create  .env.gitlab
      create  gitlab_mr_release.md.erb

リリースMergeRequestを作成

gitlab_mr_release create--source--target の間にあるアクセプトされたMergeRequestを元にリリース用のMergeRequestを作成します

$ gitlab_mr_release create --source=develop --target=master

f:id:sue445:20151115222734p:plain

設定ファイルについて

.env.gitlab

GITLAB_API_ENDPOINT=http://example.com/api/v3
GITLAB_API_PRIVATE_TOKEN=XXXXXXXXXXXXXXXXXXX
GITLAB_PROJECT_NAME=group/name
TEMPLATE_FILE=gitlab_mr_release.md.erb

この設定ファイルはカレントディレクトリ(.env.gitlab)とhomeディレクトリ(~/.env.gitlab)の2ヶ所から読みこむことができるので、GITLAB_API_PRIVATE_TOKEN のようにリポジトリにコミットしたくないものは ~/.env.gitlab に設定しておくとよいです

~/.bash_profile あたりで

export GITLAB_API_PRIVATE_TOKEN=XXXXXXXXXXXXXXXXXXX

していてもたぶん大丈夫

gitlab_mr_release.md.erb

# MergeRequests
<% merge_requests.each do |mr| %>
* [ ] !<%= mr.iid %> <%= mr.title %> @<%= mr.author.username %>
<% end %>

MergeRequestを作成する時のdescriptionのテンプレートです。erbなのでeachでループを回したりできます。

merge_requestscreate 実行時の --source--target の間にあるアクセプトされたMergeRequestの配列です。

mr で参照できる要素は下記参照。 https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/merge_requests.md#get-single-mr