wata.dev

Jenkinsでジョブの変更履歴をChatWorkに通知する

http://jenkins/job/[YOUR_JOB_NAME]/[YOUR_BUILD_NUMBER]/api/xml で見れる変更履歴をChatWork API(※要申請)を使って、ビルドが終わったタイミングで任意のルームにメッセージとして流す。

1. 事前準備

※ChatWork APIは 2014-03-11 現在、プレビュー版のようなので、あらかじめAPI使用の申請が必要

2. 既存のジョブにビルド後の処理を追加

既存のジョブの [設定] から [ビルド後の処理] に [Trigger parameterized build on other projects] を追加

  • [Projects to build] NOTIFY_CHATWORK

  • [Trigger when build is] Stable

  • [Predefined parameters]

      _JOB_NAME=$JOB_NAME
      _BUILD_NUMBER=$BUILD_NUMBER

3. ChatWorkへ通知するジョブを登録

新規でChatWorkへ通知するジョブ(NOTIFY_CHATWORK)を登録する

  • [ビルドのパラメータ化] _JOB_NAME (文字列), _BUILD_NUMBER (文字列)
  • [ビルド] シェルの実行

e.g. NOTIFY_CHATWORK

  1. curl でjenkins api(http://jenkins/job/[YOUR_JOB_NAME]/[YOUR_BUILD_NUMBER]/api/xml)を叩いて、変更履歴を取得
  2. その際 sed でテキスト整形
  3. 最後にChatWork APIを叩いて、任意のルームに通知
HEADER="[info][title]$_JOB_NAME #$_BUILD_NUMBER[/title]"
BODY=$(curl "http://jenkins/job/$_JOB_NAME/$_BUILD_NUMBER/api/xml?wrapper=changes&xpath=//changeSet//comment/text()" | sed -e 's/<changes>//' -e 's/<\/changes>//' -e 's/<changes\/>/no changes/')
FOOTER="[/info]"

curl -X POST -H "X-ChatWorkToken:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -d "body=${HEADER}${BODY}${FOOTER}" "https://api.chatwork.com/v1/rooms/xxxxxxxx/messages"

ブログの記事一覧