LoginSignup
14
18

More than 3 years have passed since last update.

GitLab(無料版)を使ったDevOps環境を考えてみる

Last updated at Posted at 2019-11-12

業務でGitLabを使い始めて数か月たちますが、思いのほか良かったのでメモがてら運用ルールを残しておこうかと思います。
(GitLabの回し者ではないです。。)

GitLabとは

元々はGitHubのオンプレ版のような認識をされていたようですが、独自進化して今やDevOpsツールとして成長を遂げています。

DevOpsに必要な機能はGitLabに備わってるよ!的なことが書いてありました。

image.png
引用: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を自分で作成する必要があるため注意が必要です。
(ハマった時のメモをコチラに残してますので、ハマったら参考にしてください。。)

  • Herokuでステージング/本番環境を構築する場合はコチラをご覧ください。
  • マージリクエスト作成時(マージ前)にパイプラインを動かしたい場合はコチラをご覧ください。

作業フロー(例)

スクラム+チケット駆動を意識した運用を考えます。

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でも結構やれるな~という印象を受けました。
すべての機能を使ったわけではないですが、小規模なプロジェクトであれば十分すぎる機能を備えていると思います。

14
18
0

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
14
18