Contents
GitLabのAPIアクセス設定
GitLabとJenkinsの連携にあたり、API認証用ユーザーを作成・トークンを発行する必要があります。このプロセスは、後続の自動化フローにおけるセキュリティ基盤となるため、慎重な手順が重要です。
管理者ユーザーの作成手順
GitLabプロジェクトに専用のAPIユーザーを作成することで、権限管理を細分化できます。以下のステップで操作します。
- GitLabダッシュボードを開き、「Admin Area」にアクセスする
- 「Users」タブから「New user」ボタンをクリックし、適切なユーザー名とメールアドレスを入力
- 「User roles」で「Maintainer」以上の権限を設定(必要に応じて最適化)
アクセストークンの発行方法
API通信に使用するトークンは、リポジトリの読み書きやWebhookイベントの取得に不可欠です。以下のように生成します。
- ユーザー設定画面(
/profile)から「Access Tokens」タブを開く - 「Name」欄に説明文を入力し、「Scope」で「api」と「read_repository」を選択
- トークンを生成後、CSVファイルなどで保存(1度だけ表示されるため注意)
注意: トークンは機密情報扱いなので、Gitリポジトリや共有ドキュメントへの記載は避けてください。
JenkinsへのGitLabプラグイン導入
Jenkins側では、GitLabとの連携に「GitLab Plugin」などの拡張機能を有効化する必要があります。最新バージョンの確認と導入手順を以下に示します。
必要プラグインの確認と有効化
Jenkinsは標準でGitLab接続機能を持っていませんので、以下の手順でプラグインを追加します。
- Jenkins管理画面(
http://<ホスト>:5000/pluginManager/)へアクセス - 「Available」タブから「GitLab Plugin」と「GitLab Authentication」を検索し、「Install without restart」を選択
最新版の確認方法
プラグインのバージョンは、Jenkinsの公式リポジトリで最新情報を確認できます。以下が主なチェックポイントです。
| 項目 | 値 | 補足 |
|---|---|---|
| GitLab Plugin | 1.6.3 | Jenkins v2.401以降対応(現在の推奨バージョン) |
| Jenkins CLI | 4.7.3 | ローカルでの管理に推奨 |
ヒント: 「Manage Plugins > Advanced」から「Check for Updates」をクリックし、自動更新も可能です。
Webhookによる自動ビルドトリガー設定
GitLab側でプッシュイベント発生時にJenkinsが自動的にビルドを開始する仕組みを構築します。手順に沿ってWebhookの設定を行います。
GitLabプロジェクト設定画面の操作
リポジトリにWebhookを登録することで、コード変更時にJenkinsが自動起動します。
- プロジェクト設定(
/settings/integrations)を開き、「Webhooks」タブへアクセス - 「Add webhook」ボタンから「URL」にJenkinsサーバーのWebhook URLを入力(後述)
- 「Push events」チェックボックスをONにして保存
Jenkinsサーバーとの接続確認
Jenkins側でGitLabプロジェクトを登録し、Webhookイベントを受け取れるように設定します。
- Jenkins管理画面の「Manage Jenkins > Configure System」を開く
- 「GitLab」セクションで「Add GitLab Server」を選択し、URLとアクセストークンを入力
- 検証用に「Test connection」ボタンクリック
確認ポイント: Webhook URLはJenkinsの
/github-webhook/など、HTTPS経由で配信される必要があります。
セキュリティベストプラクティス
トークン管理とアクセス権限設定は、CI/CD環境のセキュリティを守る上で不可欠です。以下の実践例を参考にしましょう。
アクセストークンの保存方法
トークンはJenkinsのCredentials Storeに安全に保管します。
- Jenkins管理画面 → 「Manage Jenkins > Manage Credentials」
- 新規で「Global credentials (unrestricted)」を選択し、トークンを入力
権限設定の最適化ガイド
GitLabとJenkins双方で最小権限原則を適用します。
- GitLabユーザーに必要なアクセス権(例:
read_repository)のみ付与 - Jenkinsジョブの実行アカウントは「System User」を指定し、プロジェクト単位で分離
Jenkins PipelineでのGitLab連携例
Jenkins PipelineスクリプトにGitLabとの連携コードを記述することで、自動化フローが完成します。以下に基本的なスクリプト構文を示します。
GitLabからコード取得のサンプル
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
pipeline { agent any stages { stage('Checkout') { steps { git url: 'https://gitlab.com/your-project.git', branch: 'main', credentialsId: 'GITLAB_ACCESS_TOKEN' } } } } |
ビルド・テスト・デプロイの統合手順
以下のように、Pipelineスクリプトにステージを追加することで一括自動化が可能です。
Buildステージでコードコンパイル(例: Mavenやnpmを使用)Testステージでユニットテスト実行(JUnitやSeleniumなど)DeployステージでDockerイメージのビルド・クラスタへのプッシュ
ヒント: GitLab CI/CDパイプラインとの併用も可能。
gitlab-ci.ymlとJenkins Pipelineを統合して運用することがあります。
まとめ
本記事では、JenkinsとGitLabの連携手順とセキュリティベストプラクティスについて、ステップバイステップで説明しました。導入時の注意点や具体的な設定方法を理解することで、効率的なCI/CD環境構築が可能になります。実際の運用には、プロジェクト規模に応じた最適化が必要です。