やりたいこと
フックスクリプトでJenkinsのビルドを実行するURLにリクエストすればいいのですが、今回、同一リポジトリでドキュメント類とソースコードを管理しています。
そのため、ソースコードがコミットされた時だけ、Jenkinsのビルドジョブを実行したいです。
フックスクリプトの中で、更新のあったファイルを調査し、ソースコードの場合だけJenkinsのジョブを実行するように作成します。
リポジトリの構成
今回は以下のような構成でファイルを配置しています。
/svn/repo/
├ branches
├ tags
└ trunk
├ doc
│ └ ドキュメント類
└ src
└ ソースコード
フックスクリプトを書く
今回はコミットが完了した後に実行される、post-commitを利用します。
post-commitでは、第1引数にリポジトリのパス、第2引数にリビジョン番号が渡されます。
この情報と、svnlookコマンドを利用して、変更があったファイル一覧を取得できます。この実行結果をgrepして、ソースコードが含まれている場合には、Jenkinsのビルドジョブをcurlで実行します。
post-commit
# !/bin/sh
REPOS="$1"
REV="$2"
svnlook changed "$REPOS" -r "$REV" | grep "/trunk/src/"
if [ $? -eq 0 ]; then
curl [Jenkinsのビルドを実行するためのURL]
fi