A4 WORKS Official BLOG

A4 WORKS オフィシャルブログ

jenkins

Jenkinsでビルド失敗時に任意のスクリプトを実行する

投稿日:2014年12月19日 更新日:

いろいろなプラグインを試したのですが、ビルド失敗の時だけ任意の処理を実行しようとした時に、コレというのが見つけらず意外と苦戦したのでメモ。

ビルド後の処理で任意のシェルスクリプトを実行するプラグイン

プラグイン「Post build task」をインストールします。

APIを使ってビルドステータスを取得する

${BUILD_URL}api/json?tree=result と記述することで、今回のビルドの実行結果を取得するURLとなります。
このURLにリクエストを投げ結果を取得します。
結果は {“result”:”SUCCESS”} や {“result”:”FAILURE”}  と取得できます。

JenkinsにID、PW認証をかけている場合の対処

APIにリクエストを送信した場合に、そのままだとログイン画面が表示されてしまうので、認証用のパラメータをオプション指定してリクエストします。
ホーム > Jenkinsの管理 > ユーザーの管理 >ユーザーを選択 >左メニュー:設定
と進むとAPIトークンという項目がありますので、「APIトークンの表示…」を選択します。
jenkins_api_token
ここで表示されるユーザーIDとAPIトークンをパラメータとして利用します。
wget –auth-no-challenge –http-user=ユーザーID –http-password=APIトークン ${BUILD_URL}api/json?tree=result
APIトークンを使ったリクエストの公式ドキュメント

ビルド成功・失敗の結果を取得して任意のシェルスクリプトを実行する

これらを組み合わせてPost build taskのスクリプトに以下のように設定します。

STATUS=`wget --auth-no-challenge --http-user=ユーザーID --http-password=APIトークン ${BUILD_URL}api/json?tree=result -o /dev/null -O - | grep SUCCESS | wc -w`
if [ $STATUS -eq 1 ]; then
    echo "SCCESS!!"
else
    echo "FAILURE!!!"
fi

あとは、SCCESS、FAILUREの部分に実施したい任意のコードを追加してもらえればOKです。
外部のチャット系WebAPIを呼び出したり、物理機器を操作したりお好みでどうぞ!

-jenkins
-, , ,

執筆者:

関連記事

CentOSにJenkinsをインストールしてproxyで運用

最近はAWS(Amazon Linux)を使う事が多いですが、久々にCentOSの環境でサービスを構築する機会があり、デプロイ用にJenkinsをセットアップしたので備忘録として。 事前準備 JAVA …