2012年05月13日

Gitの特定のブランチにcommitした時にJenkinsさんに頑張ってもらうhook書いた

久々にJenkinsさんと戲れているのだけども、 未だに「commitしたらJenkinsさんを働かせるhook」ってのを用意してなかったので ようやく用意してみた。

やりたかったのは、 developブランチにcommitした時に、そっち用のjenkinsさんのジョブに動いていただきたいなってところ。

単純に.git/hooks/post-commitあたりに

#!/bin/sh

wget -q -O - "http://localhost:8080/job/my-project-dev/build" > /dev/null

とでも書いておけば、commitした時にbuildしてくださるんですけども これだとどのブランチにcommitしてもbuildしてくれやがるので、それはよろしくない。 僕は特定のブランチへのcommitだけに反応してもらいたいのだ。

というわけで、commitした直後にそのcommitがどのブランチへのcommitかを取得する。

まあそれは

git log --pretty=format:%d

とでもしておけば

(HEAD, develop)

などと返ってくるので

BRANCH=`git log --pretty=format:%d -1 HEAD|sed 's/^ (HEAD,.* \([^,]*\))$/\1/'`

とでもしておけば最後の"develop"の部分が取得できたり。 必ず最後に今のブランチが来るのか知らないけど、今のところ来ているしまあいいか状態。

で、この $BRANCH に入っているのが"develop"が入っている場合に 上述のwgetなコマンドを実行すりゃあ良いってことで、こんな感じに。

#!/bin/sh

BRANCH=`git log --pretty=format:%d -1 HEAD|sed 's/^ (HEAD,.* \([^,]*\))$/\1/'`
case $BRANCH in
    develop)
        wget -q -O - "http://localhost:8080/job/my-project-dev/build" > /dev/null
        ;;
esac

if でいいじゃんだって? その内パターン増やすつもりなんだよ! 増やすかわからんけど。

久々のエントリーなんでこんなもんで。 mergeした時も対応させたいけどそれはまた今度。

タグ:git Jenkins Hook
posted by 麦汁 at 19:49 | Comment(0) | TrackBack(0) | その他 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。