JenkinsとGitLabの連携。プッシュしてジョブ実行
GitLabへプッシュしたタイミングでJenkinsのジョブを実行するように設定したときの覚書。
環境: CentOS 6.6, Jenkins 1.614, GitLab 7.10.4
参考
目次
- JenkinsがGitLabからclone出来るようにjenkinsユーザーを設定
- GitLabにjenkins用公開鍵を登録とWeb Hooks設定
- JenkinsにGitプラグインをインストール
- 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」にする
この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 >