結論
ChatWork で ChatOps をするのはつらい。
GitLab から ChatWork へ通知を飛ばす
たとえば GitLab への プッシュ をトリガにして ChatWork へ通知(ポスト)したいとします。現在のところ GitLab 自体に ChatWork へ飛ばす仕組みは組み込まれていません。したがって、Webhook を飛ばすしかありません。しかし、Webhook をどう受けてどう流すか。すべての人がぶち当たる問題です。
Fluentd を使って流すというエレガントな方法を採った方(プラグインを自作した)もおられました。
私はとにかく楽をしたかったので、Integromat で Webhook を受けて、それをトリガにして ChatWork の API を叩くという構成にしました。Integromat は他の類似サービス*1と差別化できる点として、Webhook を受けることができるという点があります。
構成
「構成」というほど大したものではありません。まず、全体の流れは以下のとおりです。
このうち、ChatWork API へ POST する部分の具体的な設定は以下のとおりになります。特に難しいところはありません。Token を X-ChatWorkToken
という名前でヘッダに指定することを忘れないようにします。
GitLab からどのような JSON が送られてくるかについては「テスト受信」をすると内容を Integromat が自動で解釈をしてくれます。その内容をもとにしてポチポチとマウスをクリックしていくと、ChatWork に投稿したいメッセージを自由に組み立てることができます。
問題点
問題点としては(当たり前ですが)Integromat に依存した構成になっているということです。また、Integromat の設定はコードで管理できない(現在のところ)ため、変更や修正、バージョン管理に弱いです。Webhook の数が多くなってくると破綻するでしょう。
そして、Integromat の回数制限に引っかからないように注意する必要があります。FREEプラン ですと一ヶ月あたり 1000 オペレーションという回数制限があります。上限近くなるとメールで通知が来るので、プランの変更などを検討する必要があります。
結論
ChatWork で ChatOps をするのはつらい。
*1:IFTTT や Zapier や Flow や myThings