概要
GitLab には、プロジェクトの変更があったときに、Webhook に POST リクエストを行って通知する機能がある。Slack 等、よく利用されているものは、簡単な API 登録をするだけで使用できる。「ChatWork 投稿」は選択肢にないが、Webhook と Google Apps Script を使うと、無料・サーバレスで ChatWork に投稿する仕組みが構築できるので紹介したい。
Heroku を使うと ChatworkにGitLabのプッシュやマージリクエストの通知を自動投稿する のような例もある。
https://github.com/infra-workshop/gitlab_chatwork_gas で整形し、
https://github.com/cw-shibuya/chatwork-client-gas を利用して投稿ができる。
https://github.com/infra-workshop/gitlab_chatwork_gas のプルリクエストがあれば、お待ちしています!
使い方
エンドポイントの作成
準備
- https://script.google.com/home から、新規プロジェクトを作成する。
- プロジェクト名を入力する
- ライブラリの登録
- リソース->ライブラリに
Chatwork Client for Google Apps Script
のM6TcEyniCs1xb3sdXFF_FhI-MNonZQ_sT
を入力し、追加 - バージョンについて最新版を選択
-
GitlabChatwork
の1X9e-skIjQXVAojqOr2l6lVJg2p2DmnqYp3y7WpVl-KH1Odx-FInM-yUg
も同様に追加し、保存する - ファイル->プロジェクトのプロパティ->スクリプトのプロパティ にて
CHATWORK_ROOM_ID
とCHATWORK_API_KEY
を設定
ソースコードを入力
function doPost(e) {
var data = JSON.parse(e.postData.getDataAsString());
var message = GitlabChatwork.constructChatworkMessageFromGitLab(data);
GitlabChatwork.setChatworkAPIKey(PropertiesService.getScriptProperties().getProperty('CHATWORK_API_KEY'));
GitlabChatwork.setChatworkRoomId(PropertiesService.getScriptProperties().getProperty('CHATWORK_ROOM_ID'));
GitlabChatwork.setChatWorkClient(ChatWorkClient);
GitlabChatwork.sendMessageToChatwork(message);
}
公開 URL の設定
- 公開->ウェブ アプリケーションとして導入 を押下し、「アプリケーションにアクセスできるユーザー:」を「全員(匿名ユーザを含む)」に変更して「導入」
- 「現在のウェブ アプリケーションの URL:」が得られる
- コピーして控えておく(Webhook URL と表記する)
GitLab に登録
プロジェクトの 設定->インテグレーション (settings/integrations
) に URL を入力し、テストしてみる
これだけで ChatWork に投稿が可能!