2013年6月24日

【Jenkins】GitのコミットをHookしてJobを実行



自分の作業を出来るだけスムーズにしたい。
と、いう訳でGitへコミットしたタイミングで、
Jenkinsの該当ジョブを実行するように設定してみました。

Gitレポジトリからポーリングしてくるよりも、時間的には相当スムーズになりました。


Jenkins CI

まず、Jenkins側の設定ですが、Jenkins Git Pluginを導入します。

すると、ソースコード管理システムのところにGitの選択肢が現れます。
Repository URLに、該当のGitレポジトリを入力。

JenkinsユーザとしてGitからclone出来るかどうかは
コマンドラインで調べておいた方がいいです。

ビルドトリガのSCMをポーリングにチェックを入れますが、
中身は特に何も設定しません。

Git

Gitレポジトリのあるサーバへ行き、レポジトリの中身を編集します。
~/repositories/sample.git/hooks
へ移動し、post-receiveを編集します。

もし、GitLab等使っているのであれば、
シンボリックリンクになっていると思うので、
リンクを消してからpost-receiveを作成して下さい。

中身は

#!/bin/sh

curl http://[jenkins host name]/git/notifyCommit?url=git@[git host name]:sample.git

と記述します。
Jenkinsのホスト名とGitのホスト名は変更して下さい。

すると、git pushしたタイミングでcurlのログが流れるようになります。

URLを叩かれたJenkinsは該当するレポジトリを参照しジョブを実行します。