📖

GitLabの初心者が読む記事

2021/06/03に公開

Gitを知っている人向けにGitLabの説明資料を書いてみました。


GitLabとは

  • GitLab社が公開しているGitによる分散バージョン管理システムのホスティングサービス
  • DevOpsのライフサイクル全体をカバーするオールインワンのアプリケーションで、GitLabだけで、DevOpsを実践するために必要なツールを揃えることができる。

Gitのホスティングサービス?

  • リモートリポジトリを格納するサーバの場所を貸し出すサービス。
  • チーム開発時は各メンバーがホスティングサービスのリポジトリをPush&Pullして開発を進める。
  • 分散管理なのでローカルとサーバーの二か所以上にファイルを格納できるため、一つのリポジトリが破損しても、その他のリポジトリから復旧できるので、可用性を確保できる。

DevOps?

「開発者と運用者が協力し合い、ユーザーに迅速かつ継続的にプロダクトやサービスの提供を行う」こと、上手く実現することで開発も運用も効率性が向上し、ユーザーにより良いサービスを迅速に提供することができる。


GitLabの特徴

  • 自社サーバでもオンプレミス運用ができるので、企業で利用する場合は社内のセキュリティルールに準拠できる。
  • Web版としてSaaSサービスも利用することができる。
  • DevOpsの実現のためのアジャイル開発に用いるツールが豊富に揃っており、単一のプラットフォームでDevOpsを実現できる。

GitLabの機能

Git以外にも色々機能があります。


Docker等その他ツールと連携可能

image.png

その他にも無数にあり、書ききれないため以下をご参照ください。

https://about.gitlab.com/partners/technology-partners/#cloud-partners


ジョブ自動実行機能

事前にスクリプトの内容とジョブを定義しておけば、自動的に処理を実行できる。
この機能を利用することで、開発したプログラムのテストを実行する等、様々なCI/CDを実現することができる。
※CI/CD:日々開発したソースコードなどを構成管理ファイルにコミットし、ビルドやテスト、デプロイを自動的に実行すること


ソースコードの管理

ソースコードの閲覧および変更履歴の確認
リポジトリへのアクセス管理
ブランチの閲覧・操作


コードレビュー

コードへの注釈コメント
レビュー済みコードのマージ
コンフリクトの解消
レビューが終わっていないとmasterブランチにマージできないという制限をかけることもできる。


チケット管理

タスクごとにチケットを発行し、課題等の解決に役立てる。


アジャイル開発で使用するGitLabの機能

アジャイル開発 GitLabの機能
ユーザーストーリー Issues
タスク To-Do List
エピック Epics
見積もり Weight
プロダクトバックログ Issue lists,prioritised labels
スプリント Milestones
バーンダウンチャート Burndown Chart
アジャイルボード Issue Boards

Issues(ユーザーストーリー)

顧客がやりたいことが簡潔に纏め、開発者と顧客の間で、顧客の言葉を使いながら、要件を整理し、互いの共通認識を作るために使用する。
image.png


To-Do List(タスク)

Issueのうち、個別のタスクを作成するツール。
image.png


Epics(エピック)

関連するユーザーストーリーのまとめて記述する。
例:iPhone 端末対応と Android 端末対応は「モバイル対応」というエピックでカテゴリ分けする。
image.png


Weight(見積もり)

ユーザーストーリーの規模を表すストーリーポイントを記述する。
image.png


Issue lists(プロダクトバックログ)

ビジネスや顧客のニーズを反映させたユーザーストーリーを優先度付けして一覧にする。
image.png


prioritised labels(プロダクトバックログ)

同上
image.png


Milestones(スプリント)

スプリントのスタート日や期日を設定して、Milestoneの中にIssueを配置する。
image.png


Burndown Charts(バーンダウンチャート)

スプリントの残工数を把握するために利用する。
image.png


Issue Boards(アジャイルボード)

各タスクの進捗状況を表示し、スプリントの状態を確認する。
image.png


GitHubとの違い

競合製品のGitHubとの違いは以下の通り。

  • GitHubでは、複数のツールをつなぎ合わせてエンドツーエンドのDevOpsソリューションを提供する必要があります。
  • GitLabはDevOpsのための単一プラットフォームを提供し、さまざまなツールがあらかじめ統合されている。
  • GitHubは多くの場合、2000人を超えるユーザーに対応できないが、32000人を超えるユーザーまでスケール可能。
  • GitHubのダウンタイムは4時間に及ぶこともあるが、GitLabはゼロダウンタイムのアップグレードを提供しています。
  • GitHub自体はオープンソースではないため、製品の改善はGitHubに依存しているが、GitLabはOSSなのでエコシステムが確立している。
  • GitHub + CircleCIという構成をとった場合、GUIが2種類になるが、GitLabは1画面で完結する。

参考

本投稿を作成するにあたり、下記サイトを参考および画像を引用しました。

https://www.gitlab.jp/

https://licensecounter.jp/devops-hub/blog/sbcskato8/

Discussion