JenkinsとGitLabの連携。プッシュしてジョブ実行

gitlab_jenkinsGitLabへプッシュしたタイミングでJenkinsのジョブを実行するように設定したときの覚書。

環境: CentOS 6.6, Jenkins 1.614, GitLab 7.10.4

参考

 

目次

  1. JenkinsがGitLabからclone出来るようにjenkinsユーザーを設定
  2. GitLabにjenkins用公開鍵を登録とWeb Hooks設定
  3. JenkinsにGitプラグインをインストール
  4. Jenkinsにテストジョブを作成

 


1.JenkinsがGitLabからclone出来るようにjenkinsユーザーを設定

jenkinsユーザーはSSH経由でcloneするので鍵認証設定。

jenkinsのホームディレクトリを確認
# less /etc/passwd

ホームディレクトリに移動して認証鍵を作成
# cd /var/lib/jenkins/
# mkdir .ssh
# ssh-keygen -t rsa -C
info+jenkins@hoge.jp

Enter file in which to save the key (/root/.ssh/id_rsa): ./.ssh/id_rsa
Enter passphrase (empty for no passphrase): (何も入力せずにEnter)

ファイル権限変更
# chown jenkins. -R .ssh/
# chmod 600 .ssh/id_rsa

GitLabへSSH接続するときの設定
# vi .ssh/config

Host gitlab.hoge.jp
  User          git
  Hostname      gitlab.hoge.jp
  IdentityFile  /var/lib/jenkins/.ssh/id_rsa

 


2.GitLabにjenkins用公開鍵を登録とWeb Hooks設定

GitLabに管理者でログイン
Admin area → Deploy Keys → New Deploy Key

タイトルは「jenkins」とか適当に。Keyに先ほど生成した公開鍵「id_rsa.pub」を貼り付けて保存
# less .ssh/id_rsa.pub

各プロジェクトのSettings → Deploy Keysに表示されているのを「Enable」にする

image

このDeploy KeyはReadonlyらしいので、Jenkinsからラベルを付けたりする場合はjenkinsユーザーをプロジェクトに追加した方がいいかもしれない。

次はWeb Hooksに移動。Jenkinsに通知するURLを登録。

URL: http://jenkins.hoge.jp/gitlab/build_now

このURLはJenkinsにプラグインを導入後に有効になる。

 


3.JenkinsにGitプラグインをインストール

Jenkinsの管理 → プラグインの管理

フィルターに「git」と入力。チェックしてインストールするのは

  • Git Plugin
  • Gitlab Hook Plugin

 

 


4.Jenkinsにテストジョブを作成

Jenkinsのトップに戻って「新規ジョブ作成」

ジョブ名: hello-world

「フリースタイル・プロジェクトのビルド」を選択。

ソースコード管理: Git
Repository URL: git@gitlab.hoge.jp:suganuma/hello-world.git
Branches to build: (空白にして全部を対象に)
E-mail通知: (自分のメールアドレス)

あとはデフォルトでOK。「Credentials」を指定しなくても読み取り専用でアクセス出来る。

プッシュしてみて確認。

ログを監視しながらだとわかりやすい。
# tail -f /var/log/jenkins/jenkins.log

 

あとは実際に自動化する処理を追加

最近はデプロイまで自動化する仕組みが一般化されつつある。

 

< Related Posts >