もふもふ部の部長、原田敦です。
Jenkinsと言えばビルドの失敗をいかに面白おかしく通知するかを愉しむソフトウェアですよね。そこで思いついたのがTwilio(電話API)です。ビルドに失敗したらJenkins先生から直々にお叱りの電話がかかってくる、なんてちょっと楽しいんじゃないかと思いましてね。
さてさて。
Jenkinsで既にビルドが組んであり、Twilioのアカウントも既に持っているものとしてやっていきます。Twilioアカウントはひとまずはトライアル状態でも大丈夫です。
まだアカウント取得していなければこちらからどぞ。
http://twilio.kddi-web.com/
curlで電話をかける
今回は単純に電話をかけるだけなので、シェルスクリプトからcurlを叩くことを想定。
なのでまずはcurlで電話をかけるところまでやってみます。
curlはこんな感じ。
1 2 3 4 5 |
curl -X POST 'https://api.twilio.com/2010-04-01/Accounts/<Account SID>/Calls.xml' \ -d 'From=%2B8150xxxxxxxx' \ -d 'To=%2B8180xxxxxxxx' \ -d 'Url=http%3A%2F%2F<twiML URL>' \ -u <Account SID>:<Auth Token> |
各情報を確認するためTwilioのサイトにログインします。
<Account SID>と<Auth Token>はTwilioのダッシュボードで確認できます。
Fromは 電話番号=>TWILIO電話番号 画面に表示されている番号を。
+記号やらがURLエンコードされてますので適宜読み替えてください。
Toは 電話番号=>検証済み電話番号 画面の番号を。たぶんアカウント登録時に認証した電話番号です。
UrlにはTwimlというxmlファイルのURLを入力します。これは自分のサーバに置くなりなんなりでWEBから見えるところに配置する必要があります。
今回はぼく自身のサーバに下記のような内容で配置しました。
http://api.harada-atsushi.info/twiml/jenkins_01.xmlでアクセス出来るようになっています。
jenkins_01.xml
1 2 3 4 5 |
<?xml version="1.0" encoding="UTF-8"?> <Response> <Say language="ja-JP">もしもし、ジェンキンスですよ。あんたのビルドは失敗してんだよ。あんたの目は節穴 かい?小学生からやりなおしてきな、このすっとこどっこいが。</Say> </Response> |
ここまで出来たらコマンドラインでcurlを叩いてみます。
電話がかかってきたらOKです。jenkins先生の設定に進みましょう。
Jenkins先生の設定
既にビルドが組まれている前提で簡単にやってみます。
まずは該当のプロジェクトの設定画面を開きます。
ビルド手順の追加からシェルの実行を選択し、下記のような内容のシェルスクリプトを登録します。
今回はCakePHPのプロジェクトなのでcakeコマンドでユニットテストを実行しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#!/bin/sh # phpへのパスを通す export PATH=$PATH:/usr/local/bin # ユニットテスト実行し、戻り値をflgにセットする app/Console/cake test app All flg=$? # 正常終了しなかった場合はTwilioで電話をかける if [ $flg -ne 0 ] then curl -X POST 'https://api.twilio.com/2010-04-01/Accounts/<Account SID>/Calls.xml' \ -d 'From=%2B81xxxxxxxxxx' \ -d 'To=%2B81xxxxxxxxxx' \ -d 'Url=http%3a%2f%2fapi%2eharada%2datsushi%2einfo%2ftwiml%2fjenkins_01%2exml' \ -u <Account SID>:<Auth Token> fi # シェルスクリプトの実行結果を返す exit $flg |
ちなみに、シェルスクリプトの先頭に「#!/bin/sh」をつけないと、ユニットテストが異常終了した時点でシェルスクリプトが終了してしまうため電話がかかってきません。ご注意を。
それでは、ビルドしてみましょう。gitなりなんなりで失敗するユニットテストを含めて、画面から「ビルド実行」を選択。しばらく待ちます。
お、かかってきた。すっとこどっこいって言われちゃいました!
すみませんJenkins先生。小学生からやりなおしてきますね!
twimlを増やして、ランダムで色んなパターンのお叱り電話がかかってくるようにするのも楽しそうですね。またそのうちやってみようかな。

原田 敦

最新記事 by 原田 敦 (全て見る)
- Rails Engineでブログ機能追加するgemを作る - 2015年3月15日
- WEBエンジニア一人だけでサービスを作りきる方法-夫婦のための自動ごはん予定お知らせサービス「GoHaaan」制作でやったこと - 2015年3月7日
- CentOS6でMariaDBのDynamic Columnsを試してみた - 2015年2月28日