webネタ

技術系ブログ。web系SE。1988。♂。@rhong_

jenkinsからircにikachanで通知

jenkinsのIRCプラグインが動かなかったので、ikachanから通知するようにしたメモ。

ikachanは、httpでircに通知したりできる便利なツール。perl製。

cpanmインストール

cd
mkdir bin && cd ~/bin
curl -LOk http://xrl.us/cpanm
chmod +x cpanm
cpanm local::lib
cpanm --self-upgrade

ikachanインストール

cpanm AnySan
cpanm Plack
cpanm Plack/Builder/Conditionals.pm
cpanm Twiggy/Server.pm

cpanm App::Ikachan

ikachan操作

IRCサーバーに繋ぐ

nohup perl /usr/local/bin/ikachan -S 172.16.42.00 -N jenkins -K password -P 6667 &

#allチャンネルに入る

curl -F channel=#all http://localhost:4979/join

通知

curl -F channel=#all -F message=おっふ http://localhost:4979/notice

jenkinsから送る

Post build taskプラグイン追加

ビルド後にシェルが叩けるプラグインをいれる。

失敗時のみ通知するシェル

# 結果
RESULT=`curl ${BUILD_URL}api/xml | perl -le '$_=<>;/<result>(.+?)</;printf "\x02\x0301,%02d%s\x0f",{A=>8,S=>3,F=>4}->{substr $1,0,1},$1'`
RESULT_STATUS=`curl ${BUILD_URL}api/xml | perl -le '$_=<>;print [/<result>(.+?)</]->[0]'`
CONSOLE_URL=${BUILD_URL}parsed_console

# 失敗ならIRCに通知
if [ ${RESULT_STATUS} = "FAILURE" ]; then
  curl -F channel=\#all -F message="$JOB_NAME $RESULT - $CONSOLE_URL" http://localhost:4979/notice
fi