チャプター ▾ 第2版

4.8 サーバー上のGit - GitLab

GitLab

GitWebはかなりシンプルです。モダンでフル機能のGitサーバーを探しているなら、代わりにインストールできるオープンソースソリューションがいくつかあります。GitLabは人気の高いものの一つなので、そのインストールと使用例を取り上げます。これはGitWebのオプションよりも難しく、より多くのメンテナンスが必要ですが、フル機能のオプションです。

インストール

GitLabはデータベースをバックエンドとするウェブアプリケーションであるため、そのインストールは他のGitサーバーよりも複雑です。幸いなことに、このプロセスは十分に文書化され、サポートされています。GitLabは、公式のOmnibus GitLabパッケージを介してサーバーにGitLabをインストールすることを強く推奨しています。

その他のインストールオプションは次のとおりです。

  • Kubernetesで使用するためのGitLab Helmチャート。

  • Dockerで使用するためのDocker化されたGitLabパッケージ。

  • ソースファイルから。

  • AWS、Google Cloud Platform、Azure、OpenShift、Digital Oceanなどのクラウドプロバイダー。

詳細については、GitLab Community Edition (CE) readmeをお読みください。

管理

GitLabの管理インターフェースはウェブ経由でアクセスします。ブラウザでGitLabがインストールされているホスト名またはIPアドレスにアクセスし、rootユーザーとしてログインするだけです。パスワードはインストールタイプによって異なりますが、デフォルトでは、Omnibus GitLabは自動的にパスワードを生成し、少なくとも24時間/etc/gitlab/initial_root_passwordに保存します。詳細についてはドキュメントを参照してください。ログイン後、右上メニューの「Admin area」アイコンをクリックします。

The “Admin area” item in the GitLab menu
図50. GitLabメニューの「Admin area」項目

ユーザー

GitLabサーバーを使用するすべてのユーザーは、ユーザーアカウントを持っている必要があります。ユーザーアカウントは非常にシンプルで、主にログインデータに付随する個人情報を含みます。各ユーザーアカウントには**ネームスペース**があり、これはそのユーザーに属するプロジェクトの論理的なグループです。ユーザーjaneがprojectという名前のプロジェクトを持っていた場合、そのプロジェクトのURLはhttp://server/jane/projectになります。

The GitLab user administration screen
図51. GitLabユーザー管理画面

ユーザーアカウントを削除するには2つの方法があります。「ブロック」することで、ユーザーがGitLabインスタンスにログインできなくなりますが、そのユーザーのネームスペース下のすべてのデータは保持され、そのユーザーのメールアドレスで署名されたコミットは引き続きそのプロファイルにリンクされます。

一方、「削除」すると、データベースとファイルシステムから完全に削除されます。そのネームスペース内のすべてのプロジェクトとデータが削除され、そのユーザーが所有するすべてのグループも削除されます。これは明らかに、より永続的で破壊的な操作であり、めったに必要ありません。

グループ

GitLabグループは、プロジェクトのコレクションと、ユーザーがそれらのプロジェクトにアクセスする方法に関するデータです。各グループにはプロジェクトネームスペースがあり(ユーザーと同様に)、trainingというグループがmaterialsというプロジェクトを持っている場合、そのURLはhttp://server/training/materialsになります。

The GitLab group administration screen
図52. GitLabグループ管理画面

各グループには複数のユーザーが関連付けられており、それぞれのユーザーはグループのプロジェクトとグループ自体に対する権限レベルを持っています。これらは「ゲスト」(課題とチャットのみ)から「オーナー」(グループ、そのメンバー、およびそのプロジェクトを完全に制御)まで多岐にわたります。権限の種類は多すぎてここにリストすることはできませんが、GitLabには管理画面に役立つリンクがあります。

プロジェクト

GitLabプロジェクトは、単一のGitリポジトリとほぼ一致します。すべてのプロジェクトは、ユーザーまたはグループのいずれかの単一のネームスペースに属します。プロジェクトがユーザーに属する場合、プロジェクトのオーナーは誰がプロジェクトにアクセスできるかを直接制御します。プロジェクトがグループに属する場合、グループのユーザーレベルの権限が適用されます。

すべてのプロジェクトには可視性レベルがあり、そのプロジェクトのページとリポジトリへの読み取りアクセスを制御します。プロジェクトが_プライベート_の場合、プロジェクトのオーナーは特定のユーザーに明示的にアクセスを許可する必要があります。_内部_プロジェクトは、ログインしているすべてのユーザーに表示され、_公開_プロジェクトは誰でも表示できます。これは、git fetchアクセスと、そのプロジェクトのWeb UIへのアクセスの両方を制御することに注意してください。

フック

GitLabは、プロジェクトレベルとシステムレベルの両方でフックをサポートしています。いずれの場合も、関連するイベントが発生すると、GitLabサーバーはいくつかの説明的なJSONを含むHTTP POSTを実行します。これは、GitリポジトリとGitLabインスタンスを、CIサーバー、チャットルーム、デプロイツールなどの開発自動化の残りの部分に接続するのに最適な方法です。

基本的な使い方

GitLabで最初に行うことは、新しいプロジェクトを作成することです。これは、ツールバーの「+」アイコンをクリックすることで行えます。プロジェクト名、属するネームスペース、可視性レベルを尋ねられます。ここで指定するほとんどの項目は永続的なものではなく、後で設定インターフェースから変更できます。「プロジェクト作成」をクリックすれば完了です。

プロジェクトが存在したら、おそらくそれをローカルGitリポジトリと接続したいと思うでしょう。各プロジェクトはHTTPSまたはSSH経由でアクセスでき、どちらもGitリモートを設定するために使用できます。URLはプロジェクトのホームページの上部に表示されます。既存のローカルリポジトリの場合、このコマンドはホストされている場所にgitlabという名前のリモートを作成します

$ git remote add gitlab https://server/namespace/project.git

リポジトリのローカルコピーがない場合は、これを行うだけです

$ git clone https://server/namespace/project.git

ウェブUIは、リポジトリ自体のいくつかの便利なビューへのアクセスを提供します。各プロジェクトのホームページには最近のアクティビティが表示され、上部のリンクからプロジェクトのファイルとコミットログのビューに移動できます。

共同作業

GitLabプロジェクトで共同作業を行う最も簡単な方法は、各ユーザーにGitリポジトリへの直接プッシュアクセスを与えることです。プロジェクト設定の「メンバー」セクションに移動し、新しいユーザーをアクセスレベルに関連付けることで、ユーザーをプロジェクトに追加できます(異なるアクセスレベルについてはグループで少し説明しています)。ユーザーに「開発者」以上のアクセスレベルを与えることで、そのユーザーはコミットやブランチを直接リポジトリにプッシュできます。

もう一つの、より分離された共同作業の方法は、マージリクエストを使用することです。この機能により、プロジェクトを見ることができるすべてのユーザーが、制御された方法でプロジェクトに貢献できます。直接アクセス権を持つユーザーは、単にブランチを作成し、そこにコミットをプッシュし、そのブランチからmasterまたは他のブランチへのマージリクエストを開くことができます。リポジトリへのプッシュ権限を持たないユーザーは、リポジトリを「フォーク」して自身のコピーを作成し、_自身の_コピーにコミットをプッシュし、自身のフォークからメインプロジェクトへのマージリクエストを開くことができます。このモデルにより、所有者はリポジトリに何がいつ投入されるかを完全に制御できると同時に、信頼できないユーザーからの貢献も可能になります。

マージリクエストとイシューは、GitLabにおける長期的な議論の主要な単位です。各マージリクエストでは、提案された変更について行ごとに議論でき(軽量なコードレビューをサポートします)、全体的な議論スレッドも可能です。どちらもユーザーに割り当てたり、マイルストーンに整理したりできます。

このセクションは主にGitLabのGit関連機能に焦点を当てていますが、成熟したプロジェクトとして、プロジェクトwikiやシステムメンテナンスツールなど、チームの共同作業を支援する他の多くの機能も提供しています。GitLabの利点の一つは、サーバーがセットアップされ稼働し始めると、設定ファイルを微調整したり、SSH経由でサーバーにアクセスしたりする必要がほとんどなくなることです。ほとんどの管理と一般的な使用は、ブラウザ内のインターフェースを介して行うことができます。

scroll-to-top