業務でGitLabを使い始めて数か月たちますが、思いのほか良かったのでメモがてら運用ルールを残しておこうかと思います。
(GitLabの回し者ではないです。。)
GitLabとは
元々はGitHubのオンプレ版のような認識をされていたようですが、独自進化して今やDevOpsツールとして成長を遂げています。
DevOpsに必要な機能はGitLabに備わってるよ!的なことが書いてありました。
引用:https://www.gitlab.jp/comparison/
また、このページでは各ツールとGitLabを比較し、GitLabでできること/できないことを一覧で見れるので導入時に必要な機能があるか確認できるのも良いところですね。
GitLabの良いところ
- オンプレで構築できる
- いつまでも無料で利用できる
- 無料プランで結構やれる
- 小規模くらいのプロジェクトであればGitLabだけで完結できる(と思う)
GitLabの使い方
Wiki
README.mdに書くようなことではないけど、残しておいたほうが良さそうな資料をここに書いておくと良いかも。
リポジトリ
よくあるGitのホスティングサービスですね。
ブランチルール
GitLab Flowの「Production branch with GitLab flow」がシンプルで良いと思います。
ブランチ名 | 用途 | 備考 |
---|---|---|
production | 本番環境用ブランチ | 直接のマージ、プッシュ禁止 |
master | ステージング環境用ブランチ | 直接のマージ、プッシュ禁止 |
feature/xxx | 作業ブランチ |
- リポジトリ設定にて、productionとmasterは直接編集を禁止にしておきます
- 少人数なら運用でカバーでも良いかもしれないですが、念のため。。。
Issue
Issueでタスク管理を行います。
Issueは実作業レベル(1日~長くて1週間程度)の粒度に分割して作成します。
Issueのコメントで/estimate 2d
のように入力すると、見積もり工数を入れることもできるので、ストーリーポイント的に使ってもよいかもしれません。
ラベル
有料プランでないとEpic機能がつかえないので、アジャイル開発の場合はラベルでどうにかする必要があります。
以下のような分け方をすると良いかも?
種別 | ラベル名 | 色 |
---|---|---|
Epic | EP -XXXXX- | 紫 |
User Story | US -XXXXX- | 緑 |
※いちいちラベルつけるの結構めんどくさいので、かなり付け忘れます。。。
Board
カンバンボードです。
タスクの見える化に、大いに役立ちます。
デフォルトではOpenとCloseの2つしかリストがないので、以下のようなリスト構成にします
リスト名 | 内容 |
---|---|
open | バックログ |
List -対応予定- | スプリントバックログとして使用 |
List -対応中- | 対応中のIssue |
close | 完了済みのIssue |
Milestone
スプリントとして利用します。
IssueにMilestoneを設定することができます。
スプリント(1~2週間程度)ごとにMilestoneを作成し、その週に対応するIssueにMilestoneを設定します。
Merge Request
GitHubで言うところのプルリクエストです。
コードレビューはここで実施します。
※無料版の場合は承認者を設定できないため、問題なければイイネする等のルール決めが必要です
(2021/07/02追記)
最新版ではReviewer機能も無料で使えるようになりました
なお、masterやproductionへのマージの際は必ずマージリクエストを介して行うようにします。
また、マージリクエストの前後でGitLab CIを動かすこともできます
GitLab CI
いわゆるCIツールです。
テストや各環境へのデプロイの自動化を行うことができます。
※オンプレの場合はGitLab-Runnerを自分で作成する必要があるため注意が必要です。
(ハマった時のメモをコチラに残してますので、ハマったら参考にしてください。。)
作業フロー(例)
スクラム+チケット駆動を意識した運用を考えます。
1スプリントごと
- 次のスプリント用のMilestoneを作成
- そのスプリントで対応するIssueに作成したMilestoneを設定
- Boardで対象Issueを
List-対応予定-
(スプリントバックログ)に入れます
※前スプリント(Milestone)のIssueが残っている場合はMilestoneを更新する
日々の作業
- 対応するIssueから「Create Merge Request」押下し、以下を作成
- 作業ブランチ(feature/xxxxという名前で作っておく)
- WIP状態のマージリクエスト
- ローカルで作業ブランチに切り替え、作業
- コミットする際は
#123 xxxxxxx
のようにコメント内にIssueIDをつけるとGitLabのコミット一覧から直接Issueに飛べるので便利です
- コミットする際は
- 作業完了後、リモートへプッシュし、IssueのWIPをはずす(
Resolve WIP status
ボタンを押下する) - レビューアに連絡
- 補足事項等はIssueかマージリクエストに記載する
- 問題なければマージ
- GitLab CIにより、自動でテスト⇒デプロイ
最後に
無料版のGitLabでも結構やれるな~という印象を受けました。
すべての機能を使ったわけではないですが、小規模なプロジェクトであれば十分すぎる機能を備えていると思います。