概要

みろりHPを作るときには GitLab をばりばり使った。そのとき使っていた開発フローを紹介しようかなと。たぶん Issue 駆動開発って呼ばれるやつ。

 

開発フロー

こんな感じ。

  1. Milestone 作成。例: v19.9.1 Release
  2. 開発
    • Issue 作成。「これを実装する」「このバグを解決する」「こんなアイデアはどうか」
    • Branch と Merge request 作成。例: midori-mate/a_function feature/a_function feature/#82_a_function
    • Commit 作成。例: #82 Fix A function Fix A function (#82)
    • レビュー依頼。 Assignee を設定してコメント。
    • 修正と再レビュー。
    • マージ。
  3. 2 を繰り返して開発。
  4. Milestone を閉じる。

Milestone     : Issue         = 1 : n
Issue         : Merge request = 1 : n
Merge request : Commit        = 1 : n

以上の関係になる。とくに Merge request の粒度は高くする(変更はごく小さくする)こと。ひとつの Merge request は数行程度の変更で構わない。そうするとレビューもしやすい。

各フェイズの詳細を以下に。

 

Milestone 作成

大きな区切りを決める。いつまでにバージョン何々をリリース、とか。ぼくは v19.9.1 Release みたいな名前にしているよ。

 

Issue 作成

小さな区切りを決める。 Issue は「問題点」という意味だけれど、「これを実装する」「このバグを解決する」「こんなアイデアはどうか」みたいなものを投稿する。これは各個人が気軽にポンポン投稿していいものみたいだぞ。

  • Title, Description : これはまあ適当に。デフォルトのテンプレートを用意することもできる。
  • Assignee : この Issue に対応する人を設定する。最初は空っぽでもいい。
  • Milestone : さっき作った Milestone を設定。最初は空っぽでもいい。
  • Labels : まあなんだ、 Issue 一覧で絞り込みとかしやすくなるね。趣味レベルとしては、一覧がカラフルで愉快になる。
  • その他 : あんま使ったコトない。

 

Branch と Merge request 作成

Issue のページからブランチとマージリクエストを作る。ブランチ名は 担当ユーザ名/機能名feature/機能名feature/#Issue番号_機能名

 

Branch を pull して開発する

コミットコメントは次のような感じでお好みで。

  • #Issue番号 内容 例: #82 Fix A function
  • 内容 (#Issue番号) 例: Fix A function (#82)

なおコミットには試行錯誤の過程は含めず、スッキリとした内容にすること。 #82 Aをとりあえず修正してみた #82 さっきの動かなかったからやっぱやめ とかはダメってことね。だけどそういうコミットは、開発中は便利だから使うことはあると思う。そういうときは、 push する前に、 git reset --mixed *** でコミットを整理すればいいと思う。

 

レビューを依頼

push したら対応 Merge request を編集する。

  • Title : WIP: を外す。
  • Description : まあ適当に。 Closes #Issue番号 をつけると、このリクエストがマージされたとき対応する Issue が自動で close される。(この手順で Merge request を作った場合勝手についてる。)
  • Assignee : レビューする人を選択。マージする人でもある。

Assignee にコメントでレビューを依頼する。

 

レビューと修正

Assignee の人はレビューしてコメントする。(画像では例として自分でやってる。)

レビューで修正を依頼されたら、修正してコミットして push して、またコメントで依頼。

 

Merge

Assignee の人はチェック後、マージしつつブランチを削除する。

 

おしまい

全部終わったら Milestone を閉じる。

 

Slack に通知

こんなフローがあったところで通知がこなけりゃ意味ないので Slack に通知しとく。

  1. Slack の Incoming WebHooks のページ にアクセス。
  2. Add Configuration
  3. 画面に従って通知をするチャンネルを指定
  4. Webhook URL を取得
    • このページで通知時のアイコンとかいろいろ決められる。
  5. GitLab に戻ってきて Settings > Integrations > Slack notifications
  6. Webhook に Webhook URL を入力。