2017年1月11日水曜日

CIサービスの結果を Twitter に投稿する

あけましておめでとうございます。本年もよろしくお願いしますm(__)m

さて、今年は酉年ということなので
新年一発目は「鳥」繋がりで、CIサービスと Twitter の連携をやってみたいと思います。



とはいえ、このネタは二番煎じでございます。

ほぼこちらの記事を参考にしております。
が、この記事ではちゃんと成功するところまでやってみました

では、(上記記事に書いてあることもありますが)詳しく説明をしていきます。

Webhook Notification + Zapier + Twitter
CIサービスでは、E-MAIL の他に Slack や HipChat などの Notification に対応しているところがほとんどですが、Twitter をサポートしているものがなかったため(※)、大抵のCIサービスで利用可能な Webhook を使って連携をさせます。
そして、Webhook と Twiiter を繋ぐ役割を担うのは、 Zapier です。



Zapier は複数サービスを連携するサービスの1つで、この手のサービスで有名なのは IFTTT だそうです。
今回 Zapier を選択したのは、参考記事にもあるように Webhook を使うためです。

また、今回 CI サービスには Travis CI を使用します。理由はメインで使っている CI サービスだから。
(他の Webhook Notification に対応した CI サービスでも同様に連携することができます。)


それでは早速連携の設定をしていきましょう。

※ iutest で使用している CIサービスのドキュメントを確認。その他、検索しても出てこないので多分ない

MAKE ZAP!
まずは、Zapier にサインアップします。


サインアップしたら、右上の「MAKE A ZAP!」ボタンを押して連携を作ります。


最初にトリガーになるアプリケーションを選択します。
今回は Webhook を使うので検索ボックスに Webhook といれて選択。


続いて、トリガーは「Catch Hook」を選択して、「Save + Continue」を押します。


次はオプション設定になります。今回は特に設定する必要がありませんので、空のまま「Continue」を押します。


これでトリガーの設定としては完了です。Webhook URL が生成されているので、これを CI サービス側から叩くことになります。
(この URL は後から確認できるので必要なときにコピーしにいきましょう)

ここでは、さらに Webhook のテストも行います。
テストページはスキップもできますが、ツイート内容を設定するときに Webhook の payload の内容を利用したいので、ここで一度テストしておきます。

Travis CI が Webhook Notification で送ってくる payload は公式ドキュメントから確認でき、 json フォーマットのサンプルが Gist からダウウンロードできるので、それを取得します。
(ここで実際に Travis CI から Webhook しても問題ありませんが、まだ機能していないのに Webhook 通知を .travis.yml に入れるのは嫌な方は以下のように curl で擬似的に送信します。)
ダウンロードしたら、gistfile1.json の先頭と末尾を以下のように少し編集します。
{
"payload": {

~~~~~~~~
   略
~~~~~~~~

}
}

編集したら、以下のように curl で送信します。
curl -v -X POST -d @gistfile1.json https://hooks.zapier.com/hooks/catch/ほげほげ

送信が成功したら、Zapier の「OK, I did this」ボタンを押します。

少しすると以下のテスト成功画面になります。



これでトリガーアプリケーションの設定は終わりです。「Continue」を押して次に進みましょう。

次はアクションアプリケーションの設定をしていきます。

まず、アクションアプリケーションに Twitter を選択します。


次に、アクションを選択します。今回は単純にツイートするだけなので「Create Tweet」を選択します。


続いて、アカウントを選択します。まだ Zapier と Twitter のアカウント連携をしていない場合は、「Connect a New Account」ボタンから連携を承認します。


最後に、ツイートする内容を設定します。



Message の右上にあるボタンを押すと、Webhook のパラメータ候補が出てきます。
Webhook のテストで送った payload の要素が選択できるようになっているはずなので、お好きなメッセージを入力してください。
編集できたら、「Continue」ボタンを押してください。


最後に、ZAP を ON にしたら完成です!





Travis CI の設定
Travis CI 側の設定でやることは1つだけで、Webhook Notification の設定を .travis.yml に追加するだけです。
ただし、Webhook URL をそのまま載せてしまうと誰でも URL を叩けてしまうので、暗号化をします。

やり方は簡単です。以下のコマンドを .travis.yml のあるディレクトリで実行すれば、勝手に設定を追加してくれます。
(travis コマンドはインストールしておいてください。)
travis encrypt "<webhook url>" --add notifications.webhooks
勝手にフォーマットされるのが気に食わない場合は、 --add オプションなしで実行すると暗号化された文字列がコンソールに出力されますので、それを以下のように .travis.yml に追記してください。

notifications:
  webhooks:
    secure: ほげほげ
    on_success: change # default: always
    on_failure: always # default: always

デフォルトだと、on_success/on_failure ともに常に通知になってますので、お好みで変更してください。

結果

ツイートできました!!

今回は以上です。では。



0 件のコメント:

コメントを投稿