GitLab から ChatWork へ 通知を飛ばす

結論

ChatWork で ChatOps をするのはつらい。

GitLab から ChatWork へ通知を飛ばす

たとえば GitLab への プッシュ をトリガにして ChatWork へ通知(ポスト)したいとします。現在のところ GitLab 自体に ChatWork へ飛ばす仕組みは組み込まれていません。したがって、Webhook を飛ばすしかありません。しかし、Webhook をどう受けてどう流すか。すべての人がぶち当たる問題です。

Fluentd を使って流すというエレガントな方法を採った方(プラグインを自作した)もおられました。

私はとにかく楽をしたかったので、Integromat で Webhook を受けて、それをトリガにして ChatWork の API を叩くという構成にしました。Integromat は他の類似サービス*1と差別化できる点として、Webhook を受けることができるという点があります。

構成

「構成」というほど大したものではありません。まず、全体の流れは以下のとおりです。

f:id:gregminster:20180504132631p:plain

このうち、ChatWork API へ POST する部分の具体的な設定は以下のとおりになります。特に難しいところはありません。Token を X-ChatWorkToken という名前でヘッダに指定することを忘れないようにします。

f:id:gregminster:20180504133019p:plain

GitLab からどのような JSON が送られてくるかについては「テスト受信」をすると内容を Integromat が自動で解釈をしてくれます。その内容をもとにしてポチポチとマウスをクリックしていくと、ChatWork に投稿したいメッセージを自由に組み立てることができます。

問題点

問題点としては(当たり前ですが)Integromat に依存した構成になっているということです。また、Integromat の設定はコードで管理できない(現在のところ)ため、変更や修正、バージョン管理に弱いです。Webhook の数が多くなってくると破綻するでしょう。

そして、Integromat の回数制限に引っかからないように注意する必要があります。FREEプラン ですと一ヶ月あたり 1000 オペレーションという回数制限があります。上限近くなるとメールで通知が来るので、プランの変更などを検討する必要があります。

結論

ChatWork で ChatOps をするのはつらい。

*1:IFTTT や Zapier や Flow や myThings

Powered by はてなブログ