Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
5
Help us understand the problem. What are the problem?
@takotakot

GitlabChatwork を用いた、GitLab から ChatWork への自動投稿

概要

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 のプルリクエストがあれば、お待ちしています!

使い方

エンドポイントの作成

準備

  1. https://script.google.com/home から、新規プロジェクトを作成する。
  2. プロジェクト名を入力する
  3. ライブラリの登録
    1. リソース->ライブラリに Chatwork Client for Google Apps ScriptM6TcEyniCs1xb3sdXFF_FhI-MNonZQ_sT を入力し、追加
    2. バージョンについて最新版を選択
    3. GitlabChatwork1X9e-skIjQXVAojqOr2l6lVJg2p2DmnqYp3y7WpVl-KH1Odx-FInM-yUg も同様に追加し、保存する
  4. ファイル->プロジェクトのプロパティ->スクリプトのプロパティ にて
    CHATWORK_ROOM_IDCHATWORK_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 の設定

  1. 公開->ウェブ アプリケーションとして導入 を押下し、「アプリケーションにアクセスできるユーザー:」を「全員(匿名ユーザを含む)」に変更して「導入」
  2. 「現在のウェブ アプリケーションの URL:」が得られる
  3. コピーして控えておく(Webhook URL と表記する)

GitLab に登録

プロジェクトの 設定->インテグレーション (settings/integrations) に URL を入力し、テストしてみる

これだけで ChatWork に投稿が可能!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
5
Help us understand the problem. What are the problem?