GitLabとは?
バージョン管理ツールを主体としたRuby on Rails製の開発支援ツールです。エンジニア以外でも気軽に使えるように設計されておりアイディア出し等のコミュニケーションの活性化を目指したツールです。
GitLabの特徴
- アプリケーション開発ライフサイクルに必要な機能の豊富さとその連携に強い。
- ツール間の設定変更やバージョンアップを一元的に行ってくれる。
- あらゆる規模のチーム開発に対応できるように設計されている。
- オンプレミス、クラウド問わず自由に環境を構築して主要ツールを利用できる。
- LDAPやAD等の認証サービスとも連携できるのでMicrosoft製品との相性も良い。
- gitlab-ctlという専用の管理コマンドにより容易に運用できる。
- 監視ツール(Promethecus)はOSのパッケージマネージャから簡単にアップグレードできる。
GitLabの他ツールと違った最大の特徴は、複数ツールとの連携に強く、ツールのバージョンアップや設定変更等の管理を一元で行ってくれて導入や運用コストを大きく下げられる点にあるでしょう。
ディレクトリ構成
ディレクトリ | 用途 |
---|---|
/opt/gitlab | GitLab実行ライブラリのディレクトリ |
bin | GitLabの管理コマンド |
etc | 実行環境変数や設定の配置 |
embedded | 各プロセスのバイナリファイル |
sv | runsvdirプログラムの配置 |
/var/opt/gitlab/ | GitLabデータディレクトリ |
git-data | リポジトリ配置ディレクトリ |
git-data/repositories | Gitリポジトリデータ |
git-rails/shared | オブジェクトの配置ディレクトリ |
git-rails/shared/artifacts | CIの成果物の配置 |
git-rails/shared/lfs-objects | LFSオブジェクトの配置 |
git-rails/uploads | ユーザー添付ファイルの配置 |
git-rails/shared/pages | ユーザーカスタマイズページオブジェクト |
gitlab-ci/builds | CIのビルドログ |
/etc/gitlab/ | GitLabユーザー設定ファイルディレクトリ |
gitlab.rb | 設定ファイル、運用者がよく利用するディレクトリはこれでしょう。 |
/var/log/gitlab | GitLabログディレクトリ |
GitLabの機能
他のプロダクトと柔軟に連携するための内部拡張機能が同梱されています。
- Gitのリポジトリ機能
- 課題管理
- レビュー
- テスト
- きめ細やかなアクセスコントロール
GitHubとの比較
CI機能がGitHubは外部サービス任せとなっていますが、GitLabの場合は機能として保持(GitLab CI)しています。また、オンプレ版に関してはGitHubは有料なのにGitLabは無料になります。
GitLabを採用している企業
GitLabはCIツールとして高く評価をされており下記のような有名企業でも導入されています。
- SONY
- NASA
- Nasdaq
GitLabの歴史
年 | 説明 |
---|---|
2011年 | GitLabプロジェクトスタート |
2012年 | OSS化される。GitLab CIの最初のバージョンもできました。 |
2013年 | GitLabが会社として独立準備が行われました。 |
2014年 | GitLabが会社として独立しました。 |
2016年 | GitLabのコントリビュータの数が1000人、利用組織が10万、利用者が何百万になりました。 |
GitLabのプロダクト
GitLab CE
OSSで開発されている無償プロダクトでありユーザー自身が構築する必要があります。MITライセンスになります。
GitLab EE
GitLab CEに大規模向けの機能が追加されたものです。GitLab Inc.からサポートも受けられる有償プロダクトになります。
GitLab.com
GitLabをSaaSモデルにしたオンライン上のプロダクトです。無償も有償サポートもあります。
GitHost.io
専有型のGitLabホスティングサービスです。
GitLabのイベント
GitLabでは特定のエンジニアだけが開発に参加するという状況を作らないように下記二つのイベントを設けています。
定期アップグレード
毎月22日にマイナーアップグレードが行われます。このタイミングで新機能の追加やバグ修正のリリースが行われます。少なくとも一ヶ月前のバージョンのリリース内容には着目しておく必要があるでしょう。
Issues Bash
GitLabには多くのIssueがあり基本的には社員がレビューを行ってマージしています。ただ、どうしても手が回らなくなってしまったりするので2日という期間を設けてIssueの解決をするイベントを行っています。最も多くのIssueを解決した参加者は表彰されたりします。
機能一覧
ユーザー管理
GitLabにおけるユーザーには下記の2種類があります。
- 管理者ユーザー
- 一般ユーザー
管理者ユーザー
GitLabのインストール後にはrootというユーザーがデフォルトで作成されますがこれは管理者ユーザーになります。
管理者ユーザー特有の機能
管理者ユーザーは一般ユーザーが利用できる機能に加えて下記の機能が使えるようになっています。
- 全プロジェクト、ユーザー、グループの管理
- ジョブや各プロセスのシステム監視
- システムメンテナンス通知
- System Hookの登録
ユーザーの作成方法
GitLab上にユーザーを作成する方法は二つあります。どちらでも良いですが実際にGitLabを運用する際はどちらで作成するかは事前にチーム内で決めておいた方が良いでしょう。
- ログイン画面から新規作成する方法
- 管理者ユーザーにより新規作成する方法
Gitリポジトリ管理
プロジェクト単位で公開、非公開のGitリポジトリを持っていてそれを管理する機能がGitLabのコア機能と言えます。機能を使いこなす上では事前にGitに関する基本的な知識を持っておく必要があります。
ロール管理
Gitリポジトリに対してそれぞれロールベースのユーザー管理を行えます。
統合的なコード管理
オンラインのGitリポジトリ上でコミットやフォーク等の処理を行うことができます。
プロジェクトポータル機能
プロジェクトのwikiや独自のプロジェクトサイトを構築できます。
課題管理
「Issue Board」機能があり、開発途中やサービス運用で出たプロジェクトやソースコードに対する課題管理を行えます。課題をタスク化することで次期リリース計画を見える化する事も可能です。
リリースの追跡
リリースの進捗モニタリングを行えます。
コードの品質向上
マージリクエストによるコードレビューをメンバ間で行えます。
デプロイ管理
CICDを視覚化し、デプロイの状況やエラー等を管理することが可能です。成果物は本番環境へのデプロイだけでなくGitLabに包括されているコンテナレジストリに保存する事も可能です。
更新のモニタリング
Slack等のチャットツールにデプロイの変更通知を行えます。デプロイにかかっている時間の測定等も可能です。
この記事へのコメントはありません。