GitLab CE の設定とカスタマイズ:自分好みの環境を構築
GitLab Community Edition (CE) は、包括的な DevOps ライフサイクルをサポートする強力なオープンソースプラットフォームです。ソースコード管理、CI/CD パイプライン、プロジェクト管理、コードレビューなど、ソフトウェア開発に必要な機能を一元的に提供します。GitLab CE は、個人の開発者から大規模な組織まで、幅広いニーズに対応できるよう設計されており、柔軟な設定と豊富なカスタマイズオプションを備えています。
この記事では、GitLab CE をインストールから設定、そして自分好みの環境へとカスタマイズするまでの詳細な手順を解説します。具体的には、以下のような内容を網羅します。
目次:
- GitLab CE とは?:
- GitLab CE の概要と特徴
- GitLab EE (Enterprise Edition) との違い
- GitLab CE のメリット
- GitLab CE のインストール:
- 推奨されるハードウェア要件
- インストール方法の選択 (パッケージ、Docker、ソースコード)
- パッケージインストール (Ubuntu, CentOS など) の手順
- Docker を使用したインストール手順
- 初期設定と管理者アカウントの作成
- GitLab CE の基本設定:
- 一般設定 (General Settings) の設定
- ネットワーク設定 (Network Settings) の設定
- メール設定 (Email Settings) の設定
- セキュリティ設定 (Security Settings) の設定
- モニタリング設定 (Monitoring Settings) の設定
- GitLab CE のカスタマイズ:
- 外観のカスタマイズ (テーマ、ロゴ、Favicon)
- 認証方法のカスタマイズ (LDAP, OAuth)
- CI/CD パイプラインのカスタマイズ
- GitLab Runner の設定と活用
- GitLab Pages の設定と活用
- Webhooks の設定と活用
- Markdown エディタのカスタマイズ
- プロジェクトテンプレートの作成と活用
- GitLab CE の管理:
- ユーザー管理とグループ管理
- 権限管理とアクセス制御
- バックアップとリストア
- アップグレード
- トラブルシューティング
- GitLab CE の高度な活用:
- GitLab API の活用
- GitLab CI/CD を利用したデプロイメント戦略
- GitLab を利用したセキュリティ脆弱性管理
- GitLab を利用したプロジェクト管理
- まとめ:
- GitLab CE の可能性
- 今後の展望
1. GitLab CE とは?
1.1. GitLab CE の概要と特徴
GitLab CE は、Git ベースのバージョン管理システムを中心に、ソフトウェア開発に必要な機能を統合した Web アプリケーションです。プロジェクトのソースコード管理、イシュー追跡、CI/CD パイプライン、コードレビュー、Wiki、プロジェクト計画など、ソフトウェア開発の全工程を効率的に管理できます。
GitLab CE の主な特徴は以下のとおりです。
- オープンソース: 無償で利用でき、ソースコードが公開されているため、自由にカスタマイズや拡張が可能です。
- 包括的な機能: ソフトウェア開発に必要な機能を一元的に提供し、複数のツールを連携させる手間を削減します。
- CI/CD パイプライン: ビルド、テスト、デプロイメントを自動化し、開発サイクルを加速させます。
- コラボレーション機能: コードレビュー、イシュー追跡、Wiki など、チームでの共同作業を促進する機能を豊富に備えています。
- 柔軟な設定: さまざまなニーズに対応できるよう、詳細な設定オプションが用意されています。
- 豊富な API: GitLab API を使用して、他のシステムとの連携や自動化が可能です。
1.2. GitLab EE (Enterprise Edition) との違い
GitLab には、CE (Community Edition) と EE (Enterprise Edition) の 2 つのエディションがあります。CE は無償で利用できるオープンソース版であり、EE はより高度な機能とサポートを提供する有償版です。
GitLab EE は、大規模な組織やセキュリティ要件の高い組織向けに設計されており、以下のような CE にはない機能を提供します。
- 高可用性: システムの可用性を向上させるための機能を提供します。
- 高度なセキュリティ機能: より詳細なアクセス制御、監査ログ、セキュリティスキャンなどの機能を提供します。
- 優先サポート: GitLab 社からの優先的なサポートを受けられます。
- 高度な管理機能: 大規模なユーザーベースを効率的に管理するための機能を提供します。
- ポートフォリオ管理: 複数のプロジェクトを横断的に管理するための機能を提供します。
どちらのエディションを選択するかは、組織の規模、予算、必要な機能によって異なります。小規模なチームや個人開発者であれば GitLab CE で十分な機能を活用できます。
1.3. GitLab CE のメリット
GitLab CE を利用するメリットは数多くあります。
- コスト削減: 無償で利用できるため、ライセンス費用を削減できます。
- 柔軟性: オープンソースであるため、組織のニーズに合わせて自由にカスタマイズや拡張が可能です。
- 生産性向上: ソフトウェア開発に必要な機能を一元的に提供するため、開発効率が向上します。
- コラボレーション促進: チームでの共同作業を支援する機能が豊富に用意されています。
- セキュリティ強化: 適切な設定と運用を行うことで、セキュリティリスクを軽減できます。
- コミュニティサポート: 活発なコミュニティが存在し、情報交換や問題解決を支援してくれます。
2. GitLab CE のインストール
GitLab CE のインストール方法は、主に以下の 3 つがあります。
- パッケージインストール: 各 Linux ディストリビューション向けのパッケージ (RPM, DEB) を使用してインストールします。
- Docker インストール: Docker コンテナを使用してインストールします。
- ソースコードインストール: ソースコードをダウンロードして、手動でインストールします。
最も簡単なのはパッケージインストールですが、Docker を使用すると、環境構築が容易になり、移植性も高まります。ソースコードインストールは、GitLab の開発に貢献したい場合や、特殊な要件がある場合に選択されます。
2.1. 推奨されるハードウェア要件
GitLab CE を快適に動作させるためには、以下のハードウェア要件を満たすことが推奨されます。
- CPU: 2 コア以上
- メモリ: 4 GB 以上 (推奨 8 GB 以上)
- ストレージ: 10 GB 以上 (ソースコードの量に応じて増加)
これらの要件は、同時アクセス数やプロジェクトの規模によって異なります。大規模な環境では、より多くのリソースが必要となります。
2.2. インストール方法の選択 (パッケージ、Docker、ソースコード)
-
パッケージインストール:
- メリット: 簡単で迅速にインストールできる。ディストリビューションのパッケージ管理システムを利用できる。
- デメリット: ディストリビューションに依存する。カスタマイズの自由度が低い。
- 推奨: 手軽に GitLab CE を試したい場合や、標準的な構成で利用したい場合に最適。
-
Docker インストール:
- メリット: 環境構築が容易。移植性が高い。設定ファイルによる管理が可能。
- デメリット: Docker の知識が必要。パフォーマンスがパッケージインストールに比べて若干劣る場合がある。
- 推奨: 開発環境やテスト環境、異なる環境への移行を容易にしたい場合に最適。
-
ソースコードインストール:
- メリット: 最大限の自由度でカスタマイズが可能。GitLab の開発に貢献できる。
- デメリット: 複雑な手順が必要。専門的な知識が求められる。
- 推奨: GitLab の開発に貢献したい場合や、特殊な要件がある場合にのみ選択する。
2.3. パッケージインストール (Ubuntu, CentOS など) の手順
ここでは、Ubuntu に GitLab CE をパッケージインストールする手順を例として説明します。CentOS など、他のディストリビューションでも同様の手順でインストールできます。
-
必要なパッケージのインストール:
bash
sudo apt update
sudo apt install curl openssh-server ca-certificates postfixcurl
: Web サイトからファイルをダウンロードするために使用します。openssh-server
: SSH でサーバーにアクセスするために使用します。ca-certificates
: HTTPS で Web サイトにアクセスするために使用します。postfix
: メールを送信するために使用します (オプション)。
-
GitLab リポジトリの追加:
bash
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bashこのコマンドは、GitLab の公式リポジトリをシステムに追加し、GitLab CE のパッケージをダウンロードできるようにします。
-
GitLab CE のインストール:
bash
sudo apt install gitlab-ceこのコマンドは、GitLab CE のパッケージをダウンロードしてインストールします。インストールには時間がかかる場合があります。
-
GitLab CE の設定:
bash
sudo gitlab-ctl reconfigureこのコマンドは、GitLab CE の設定を適用します。初期設定では、GitLab CE は自動的に起動します。
-
GitLab CE へのアクセス:
ブラウザでサーバーの IP アドレスまたはドメイン名にアクセスします。初期設定では、管理者アカウントのパスワードを設定する画面が表示されます。
2.4. Docker を使用したインストール手順
Docker を使用して GitLab CE をインストールする手順を説明します。
-
Docker と Docker Compose のインストール:
Docker と Docker Compose がインストールされていない場合は、以下のコマンドでインストールします。
bash
sudo apt update
sudo apt install docker-composeDocker のインストール手順は、Docker 公式ドキュメントを参照してください。
-
docker-compose.yml ファイルの作成:
以下の内容で
docker-compose.yml
ファイルを作成します。yaml
version: '3.6'
services:
gitlab:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'gitlab.example.com' # GitLab のホスト名を設定
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.example.com' # GitLab の URL を設定
gitlab_rails['gitlab_shell_ssh_port'] = 2222 # SSH ポートを設定
ports:
- '80:80'
- '443:443'
- '2222:22'
volumes:
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'image
: 使用する GitLab CE の Docker イメージを指定します。hostname
: GitLab のホスト名を指定します。external_url
: GitLab の URL を指定します。ports
: ホストとコンテナのポートマッピングを指定します。volumes
: ホストとコンテナのボリュームマウントを指定します。
注意:
gitlab.example.com
は、実際のドメイン名または IP アドレスに置き換えてください。 -
GitLab CE の起動:
docker-compose.yml
ファイルがあるディレクトリで、以下のコマンドを実行します。bash
docker-compose up -dこのコマンドは、GitLab CE の Docker コンテナをバックグラウンドで起動します。
-
GitLab CE へのアクセス:
ブラウザで
docker-compose.yml
ファイルで設定したホスト名または IP アドレスにアクセスします。初期設定では、管理者アカウントのパスワードを設定する画面が表示されます。
2.5. 初期設定と管理者アカウントの作成
GitLab CE に初めてアクセスすると、管理者アカウントのパスワードを設定する画面が表示されます。
-
パスワードの設定:
管理者アカウント (通常は
root
) のパスワードを入力して、パスワードを設定します。 -
ログイン:
設定したパスワードで管理者アカウントにログインします。
-
初期設定の確認:
管理者画面で、GitLab CE のバージョンや設定を確認します。
3. GitLab CE の基本設定
GitLab CE のインストールが完了したら、基本的な設定を行います。
3.1. 一般設定 (General Settings) の設定
- アプリケーション設定 (General Application Settings):
- アプリケーション名 (Application Name): GitLab の名前を設定します。
- アプリケーション記述 (Application Description): GitLab の説明を設定します。
- ロゴ (Logo): GitLab のロゴを変更します。
- Favicon (Favicon): ブラウザタブに表示されるアイコンを変更します。
- テーマ (Theme): GitLab のテーマを選択します。
- アカウントおよび制限 (Account and Limit Settings):
- サインアップ制限 (Sign-up Restrictions): 新規ユーザーの登録を許可するかどうかを設定します。
- パスワードポリシー (Password Policy): パスワードの複雑さや有効期限などを設定します。
- リポジトリサイズの制限 (Repository size limit): リポジトリの最大サイズを設定します。
- 可視性レベル (Visibility Levels):
- プロジェクトの可視性 (Project visibility): プロジェクトの可視性レベル (Public, Internal, Private) を設定します。
- グループの可視性 (Group visibility): グループの可視性レベルを設定します。
3.2. ネットワーク設定 (Network Settings) の設定
- ホスト名とパス (Hostname and Path):
- 外部 URL (External URL): GitLab の URL を設定します。
- 相対 URL ルート (Relative URL root): GitLab をサブディレクトリにインストールした場合に、ルートパスを設定します。
- SSL 証明書 (SSL Certificate):
- SSL 証明書 (SSL certificate): SSL 証明書を設定します。
- SSL 鍵 (SSL key): SSL 鍵を設定します。
3.3. メール設定 (Email Settings) の設定
- SMTP 設定 (SMTP Settings):
- SMTP サーバー (SMTP server): SMTP サーバーのアドレスを設定します。
- SMTP ポート (SMTP port): SMTP サーバーのポートを設定します。
- SMTP ユーザー名 (SMTP username): SMTP サーバーのユーザー名を設定します。
- SMTP パスワード (SMTP password): SMTP サーバーのパスワードを設定します。
- SMTP TLS (SMTP TLS): TLS を使用するかどうかを設定します。
- SMTP STARTTLS (SMTP STARTTLS): STARTTLS を使用するかどうかを設定します。
- メール受信設定 (Email Receiving Settings):
- 受信メールアドレス (Incoming email address): メールを受信するアドレスを設定します。
- 受信メールサーバー (Incoming email server): メールを受信するサーバーのアドレスを設定します。
- 受信メールポート (Incoming email port): メールを受信するサーバーのポートを設定します。
3.4. セキュリティ設定 (Security Settings) の設定
- 認証設定 (Authentication Settings):
- 2 段階認証 (Two-factor authentication): 2 段階認証を強制するかどうかを設定します。
- ログイン制限 (Sign-in restrictions): ログイン試行回数制限などを設定します。
- アプリケーション設定 (Application Settings):
- Cross-Origin Resource Sharing (CORS): CORS を有効にするかどうかを設定します。
- Content Security Policy (CSP): CSP を有効にするかどうかを設定します。
3.5. モニタリング設定 (Monitoring Settings) の設定
- Prometheus: Prometheus を使用して GitLab のパフォーマンスを監視するための設定を行います。
- Grafana: Grafana を使用して GitLab のパフォーマンスを可視化するための設定を行います。
4. GitLab CE のカスタマイズ
GitLab CE は、豊富なカスタマイズオプションを備えており、組織のニーズに合わせて環境を最適化できます。
4.1. 外観のカスタマイズ (テーマ、ロゴ、Favicon)
GitLab CE の外観は、テーマ、ロゴ、Favicon を変更することでカスタマイズできます。
- テーマ: 管理画面からテーマを選択できます。ダークテーマやハイコントラストテーマなど、様々なテーマが用意されています。
- ロゴ: 管理画面からロゴをアップロードできます。会社のロゴやプロジェクトのロゴなどを設定できます。
- Favicon: 管理画面から Favicon をアップロードできます。ブラウザタブに表示されるアイコンを変更できます。
4.2. 認証方法のカスタマイズ (LDAP, OAuth)
GitLab CE は、LDAP や OAuth を使用した認証をサポートしています。
- LDAP: LDAP サーバーと連携することで、既存のユーザーアカウントを使用して GitLab にログインできます。
- OAuth: Google, GitHub, Twitter などの OAuth プロバイダと連携することで、これらのアカウントを使用して GitLab にログインできます。
4.3. CI/CD パイプラインのカスタマイズ
GitLab CI/CD パイプラインは、.gitlab-ci.yml
ファイルを使用してカスタマイズできます。
- ステージ (Stages): パイプラインの実行順序を定義します。
- ジョブ (Jobs): 各ステージで実行されるタスクを定義します。
- スクリプト (Script): ジョブで実行されるコマンドを定義します。
- 変数 (Variables): パイプラインで使用する変数を定義します。
- キャッシュ (Cache): ジョブ間でファイルをキャッシュします。
4.4. GitLab Runner の設定と活用
GitLab Runner は、CI/CD パイプラインのジョブを実行するエージェントです。GitLab Runner を設定することで、GitLab CI/CD パイプラインをより効率的に実行できます。
- Runner の種類: Docker Executor, Shell Executor, Kubernetes Executor など、様々な Runner の種類があります。
- Runner の登録: GitLab Runner を GitLab に登録することで、GitLab CI/CD パイプラインから Runner を使用できます。
- Runner の設定: Runner の並列実行数やタイムアウト時間などを設定できます。
4.5. GitLab Pages の設定と活用
GitLab Pages を使用すると、Git リポジトリから静的な Web サイトを簡単に公開できます。
- プロジェクトの作成: GitLab Pages 用のプロジェクトを作成します。
- 静的 Web サイトの作成: 静的な Web サイトを作成します。
.gitlab-ci.yml
ファイルの作成: GitLab Pages 用の.gitlab-ci.yml
ファイルを作成します。- GitLab Pages の有効化: GitLab Pages を有効にします。
4.6. Webhooks の設定と活用
Webhooks を使用すると、GitLab で発生したイベントを外部システムに通知できます。
- Webhooks の設定: プロジェクトまたはグループの設定画面から Webhooks を設定します。
- イベントの選択: 通知するイベントを選択します (Push イベント, Issue イベント, Merge Request イベントなど)。
- ペイロード URL の設定: イベントを送信する URL を設定します。
4.7. Markdown エディタのカスタマイズ
GitLab CE の Markdown エディタは、様々な方法でカスタマイズできます。
- シンタックスハイライト: シンタックスハイライトのテーマを変更できます。
- プレビュー: リアルタイムプレビューを有効または無効にできます。
- ショートカット: キーボードショートカットをカスタマイズできます。
4.8. プロジェクトテンプレートの作成と活用
プロジェクトテンプレートを使用すると、新しいプロジェクトを作成する際に、あらかじめ設定されたファイルやディレクトリを自動的に作成できます。
- プロジェクトテンプレートの作成: プロジェクトをテンプレートとしてエクスポートします。
- プロジェクトテンプレートのインポート: テンプレートとしてエクスポートしたプロジェクトをインポートします。
5. GitLab CE の管理
GitLab CE の管理は、ユーザー管理、グループ管理、権限管理、アクセス制御、バックアップ、リストア、アップグレードなど多岐にわたります。
5.1. ユーザー管理とグループ管理
- ユーザーの追加: 新しいユーザーアカウントを作成します。
- ユーザーの編集: 既存のユーザーアカウントを編集します (パスワード変更, プロフィール編集など)。
- ユーザーの削除: ユーザーアカウントを削除します。
- グループの作成: 新しいグループを作成します。
- グループへのユーザーの追加: ユーザーをグループに追加します。
- グループからのユーザーの削除: グループからユーザーを削除します。
- グループの編集: グループの設定を編集します。
- グループの削除: グループを削除します。
5.2. 権限管理とアクセス制御
- プロジェクトの権限: プロジェクトに対するユーザーの権限を設定します (オーナー, メンテナー, 開発者, レポーター, ゲスト)。
- グループの権限: グループに対するユーザーの権限を設定します (オーナー, メンテナー, 開発者, レポーター, ゲスト)。
- ブランチ保護: ブランチへのアクセスを制限します。
- マージリクエスト承認ルール: マージリクエストの承認に必要な条件を設定します。
5.3. バックアップとリストア
- バックアップの作成: GitLab CE のバックアップを作成します。
- バックアップのリストア: GitLab CE をバックアップからリストアします。
5.4. アップグレード
- アップグレードの計画: GitLab CE のアップグレード計画を立てます。
- アップグレードの実行: GitLab CE を新しいバージョンにアップグレードします。
5.5. トラブルシューティング
- ログファイルの確認: GitLab CE のログファイルを確認して、問題を特定します。
- 公式ドキュメントの参照: GitLab CE の公式ドキュメントを参照して、解決策を探します。
- コミュニティへの質問: GitLab CE のコミュニティに質問して、助けを求めます。
6. GitLab CE の高度な活用
GitLab CE は、GitLab API を活用したり、CI/CD を利用したデプロイメント戦略を構築したり、セキュリティ脆弱性管理やプロジェクト管理に活用したりすることで、さらに高度な活用が可能です。
6.1. GitLab API の活用
GitLab API を使用すると、GitLab の機能をプログラムから操作できます。
- API トークンの作成: GitLab API を使用するための API トークンを作成します。
- API エンドポイントの利用: API エンドポイントを使用して、プロジェクトの作成、イシューの作成、リポジトリの操作などを行います。
6.2. GitLab CI/CD を利用したデプロイメント戦略
GitLab CI/CD を使用すると、様々なデプロイメント戦略を構築できます。
- Blue/Green デプロイメント: 新しいバージョンを別の環境にデプロイし、問題がないことを確認してからトラフィックを切り替えます。
- カナリアリリース: 少数のユーザーに新しいバージョンをリリースし、フィードバックを収集します。
- 段階的ロールアウト: 徐々に新しいバージョンをリリースします。
6.3. GitLab を利用したセキュリティ脆弱性管理
GitLab は、SAST (Static Application Security Testing)、DAST (Dynamic Application Security Testing)、Dependency Scanning などのセキュリティ脆弱性管理機能を提供します。
- SAST: ソースコードに潜在的な脆弱性がないか静的に分析します。
- DAST: 実行中のアプリケーションに潜在的な脆弱性がないか動的にテストします。
- Dependency Scanning: プロジェクトで使用している依存関係に既知の脆弱性がないか確認します。
6.4. GitLab を利用したプロジェクト管理
GitLab は、イシュー、マイルストーン、カンバンボードなどのプロジェクト管理機能を提供します。
- イシューの作成: バグ、タスク、改善要望などをイシューとして管理します。
- マイルストーンの設定: プロジェクトの目標を設定します。
- カンバンボードの利用: タスクの進捗状況を視覚的に管理します。
7. まとめ
7.1. GitLab CE の可能性
GitLab CE は、ソフトウェア開発に必要な機能を一元的に提供する強力なプラットフォームです。オープンソースであるため、組織のニーズに合わせて自由にカスタマイズや拡張が可能です。
この記事で解説した設定とカスタマイズを行うことで、GitLab CE を最大限に活用し、開発効率の向上、コラボレーションの促進、セキュリティの強化を実現できます。
7.2. 今後の展望
GitLab は、DevOps プラットフォームとして、常に進化を続けています。GitLab CE も、新機能の追加や改善が行われ、より使いやすく、強力なツールへと成長していくでしょう。
この記事が、GitLab CE の導入と活用の一助となれば幸いです。