Gitlabの更新情報をChatworkに通知するアプリケーション、Syamoを作りました。
Syamoとは?
Gitlabのプロジェクトが更新されたときにChartworkのチャットルームにメッセージを送ります。
Gitlabのプロジェクトの更新情報は次の三つです。*1
- gitブランチへのpush
- Issueの更新
- MergeReqestの更新
どうやって動かすの?
githubでソースを公開しています。 git cloneしてherokuに配置すれば動きます。
その際以下の三つの情報を設定する必要があります。
これらの情報はherokuに環境変数として設定します。詳細な設定方法はgithubを見てください。
どうやって動いているの?
node.jsで実行するWebアプリケーションです。 Gitlabのwebhookに本アプリケーションのURL登録し、通知情報を取得します。 Gitlabのwebhookに含まれないプロジェクト情報(プロジェクト名とユーザ名)を取得するためにGitlab APIを使います。
命名理由
chabotを参考にしたので、メジャーな鶏の品種で軍鶏にしました。 強そう!
愚痴
- Gitlab webhookが不便
- 空ブランチの作成・削除とかcommit0件でもpushなのか・・・
- issueのアサインが非同期更新で、セレクトボックスの値を変えるたびに通知が・・・
- issueをopen/closeするたびに二回ずつ通知が・・・
- MergeRequestは最初にマージ不可で通知して、チェック終了後にマージ可と通知するのではなく、 チェックが終わってから一回だけ通知してほしい・・・
- chatworkの記法表現力なさ過ぎ
- 文字色を指定したい。issueを赤とか色分けしたいです。
- [info]とか[hr]とかブロック要素に展開される記法直後の改行は無視して欲しい。
[hr]ほげほげ
とテンプレートに書くのが嫌です。
悩み
frisby.jsでテスト書いたのはいいけど、テストに本物のChatworkとGilabを使っているおかげで自分の秘密情報が無いとテストが通らない。 モックを使うべきなのか、ユニットテストでカバーすべきなのか?
*1:タグプッシュには対応してません。テンプレート足せば動くと思うけど試していません。