JenkinsでチャットワークAPIを利用したメッセージ送信を作成したのでメモ
前提
jenkinsインストール済み、Adminでログイン済み
環境はMac(Linux)
チャットワークへメッセージを送るスクリプト
jenkinsをインストールした環境がMacのため、シェルスクリプトでチャットワークAPIへ送信しています。
最初に簡単にチャットワークAPIへ送れるかを確かめるため、「フリースタイル・プロジェクトのビルド」からジョブを作成し、curlを利用して以下のスクリプトを組みました。
# !/bin/sh
# チャットワークトークン
token="チャットワークAPIのトークン"
# 送り先のルームID
room_id="ルームID(チャットワークURLの「#!rid」から後ろの部分)"
# チャットワークへ送るメッセージ内容
message="チャットワークにメッセージ送信"
# チャットワークにメッセージ送信
curl --insecure -X POST -H "X-ChatWorkToken:${token}" -d "body=${message}" "https://api.chatwork.com/v2/rooms/${room_id}/messages"
チャットワークAPIの申請ができていれば、上記シェルスクリプトの「token」と「room_id」を書き換えれば、チャットワークにメッセージが送れると思います。
チャットワークAPIのトークン取得は、公式ドキュメントを見て取得してください。
チャットワークへメッセージ送信するジョブを少し拡張する
これだけだとチャットワークに固定メッセージを送るビルドになってしまい、使いにくいのでルームIDとメッセージ内容だけ外部に公開して、パイプライン等の他ジョブから参照できるようにします。
以下の画像の通り、ビルドのパラメータ化を有効にして、テキストでルームIDとメッセージをパラメータ化します。
パラメータを作成後、シェルスクリプトを以下の用に修正します。
# !/bin/sh
# チャットワークトークン
token="チャットワークAPIのトークン"
# チャットワークにメッセージ送信
curl --insecure -X POST -H "X-ChatWorkToken:${token}" -d "body=${message}" "https://api.chatwork.com/v2/rooms/${room_id}/messages"
だいぶスッキリしました。
これでチャットワークへメッセージ送信するジョブが使いやすくなりました。
たとえば、以下のパイプラインスクリプトを組むことで、他ジョブでアプリをビルドする時に、チャットワークへ通知させる、ということができます。
node {
stage('1st-stage'){
build job: 'ジョブ名', parameters: [
[
$class: 'StringParameterValue',
name: 'message',
value: 'チャットワーク送信テスト',
],
[
$class: 'StringParameterValue',
name: 'room_id',
value: 'ルームID(チャットワークURLの「#!rid」から後ろの部分)',
],
]
}
}
こういうことができるようになるとJenkins触ってて楽しくなりますね。
Windowsでもバッチコマンドで似たようなことができると思います。