GitLabの初心者が読む記事
Gitを知っている人向けにGitLabの説明資料を書いてみました。
GitLabとは
- GitLab社が公開しているGitによる分散バージョン管理システムのホスティングサービス
- DevOpsのライフサイクル全体をカバーするオールインワンのアプリケーションで、GitLabだけで、DevOpsを実践するために必要なツールを揃えることができる。
Gitのホスティングサービス?
- リモートリポジトリを格納するサーバの場所を貸し出すサービス。
- チーム開発時は各メンバーがホスティングサービスのリポジトリをPush&Pullして開発を進める。
-
分散管理
なのでローカルとサーバーの二か所以上にファイルを格納できるため、一つのリポジトリが破損しても、その他のリポジトリから復旧できるので、可用性を確保できる。
DevOps?
「開発者と運用者が協力し合い、ユーザーに迅速かつ継続的にプロダクトやサービスの提供を行う」こと、上手く実現することで開発も運用も効率性が向上し、ユーザーにより良いサービスを迅速に提供することができる。
GitLabの特徴
- 自社サーバでもオンプレミス運用ができるので、企業で利用する場合は社内のセキュリティルールに準拠できる。
- Web版としてSaaSサービスも利用することができる。
- DevOpsの実現のためのアジャイル開発に用いるツールが豊富に揃っており、単一のプラットフォームでDevOpsを実現できる。
GitLabの機能
Git以外にも色々機能があります。
Docker等その他ツールと連携可能
その他にも無数にあり、書ききれないため以下をご参照ください。
ジョブ自動実行機能
事前にスクリプトの内容とジョブを定義しておけば、自動的に処理を実行できる。
この機能を利用することで、開発したプログラムのテストを実行する等、様々なCI/CDを実現することができる。
※CI/CD:日々開発したソースコードなどを構成管理ファイルにコミットし、ビルドやテスト、デプロイを自動的に実行すること
ソースコードの管理
ソースコードの閲覧および変更履歴の確認
リポジトリへのアクセス管理
ブランチの閲覧・操作
コードレビュー
コードへの注釈コメント
レビュー済みコードのマージ
コンフリクトの解消
レビューが終わっていないとmasterブランチにマージできないという制限をかけることもできる。
チケット管理
タスクごとにチケットを発行し、課題等の解決に役立てる。
アジャイル開発で使用するGitLabの機能
アジャイル開発 | GitLabの機能 |
---|---|
ユーザーストーリー | Issues |
タスク | To-Do List |
エピック | Epics |
見積もり | Weight |
プロダクトバックログ | Issue lists,prioritised labels |
スプリント | Milestones |
バーンダウンチャート | Burndown Chart |
アジャイルボード | Issue Boards |
Issues(ユーザーストーリー)
顧客がやりたいことが簡潔に纏め、開発者と顧客の間で、顧客の言葉を使いながら、要件を整理し、互いの共通認識を作るために使用する。
To-Do List(タスク)
Issueのうち、個別のタスクを作成するツール。
Epics(エピック)
関連するユーザーストーリーのまとめて記述する。
例:iPhone 端末対応と Android 端末対応は「モバイル対応」というエピックでカテゴリ分けする。
Weight(見積もり)
ユーザーストーリーの規模を表すストーリーポイントを記述する。
Issue lists(プロダクトバックログ)
ビジネスや顧客のニーズを反映させたユーザーストーリーを優先度付けして一覧にする。
prioritised labels(プロダクトバックログ)
同上
Milestones(スプリント)
スプリントのスタート日や期日を設定して、Milestoneの中にIssueを配置する。
Burndown Charts(バーンダウンチャート)
スプリントの残工数を把握するために利用する。
Issue Boards(アジャイルボード)
各タスクの進捗状況を表示し、スプリントの状態を確認する。
GitHubとの違い
競合製品のGitHubとの違いは以下の通り。
- GitHubでは、複数のツールをつなぎ合わせてエンドツーエンドのDevOpsソリューションを提供する必要があります。
- GitLabはDevOpsのための単一プラットフォームを提供し、さまざまなツールがあらかじめ統合されている。
- GitHubは多くの場合、2000人を超えるユーザーに対応できないが、32000人を超えるユーザーまでスケール可能。
- GitHubのダウンタイムは4時間に及ぶこともあるが、GitLabはゼロダウンタイムのアップグレードを提供しています。
- GitHub自体はオープンソースではないため、製品の改善はGitHubに依存しているが、GitLabはOSSなのでエコシステムが確立している。
- GitHub + CircleCIという構成をとった場合、GUIが2種類になるが、GitLabは1画面で完結する。
参考
本投稿を作成するにあたり、下記サイトを参考および画像を引用しました。
Discussion