chatworkにzapierでgitlabから通知する


やってみたので備忘録を。

こちらを参考にさせていただいて大体同じようにしてみた次第。

・事前に

gitlab.com(SaaSのやつ)じゃなくて自前だとgitlabにzapierをアプリケーション登録する必要がある模様(へー)
https://zapier.com/help/gitlab/


上のはgitlab10.6の画面です。

・Trrigerをつくる

トリガを選択→とりあえずNew Commitをえらびました

Gitlabを選択してアプリケーション登録時に取得したIDとSecretを使って接続テストします
うまくいったらSaveで続ける

ProjectとBranchかTagを選択してつづける
今回はvol-testのrefactorブランチを選択しました

サンプルデータをえらんでおいてつづけます

・Actionをつくる

</>このコード入力するマークを選んでRunPythonを選択します

テンプレートのInputDataに以下を入力
id: サンプルデータのコミットIDが勝手にでてくるのでそれを選択
auther: サンプルデータのコミットしたユーザが勝手にでてくるのでそれを選択

Codeに以下を入力

import requests
import random
import json
from datetime import datetime, date, timedelta

# Get input_data
name = input_data['author']
mr_id = input_data['id']

# ChatWork ids
reviewer = [557xxx, 556xxx, 1128xxx]

# API Key
APIKEY = '81e0xxxxxxxxxxxxxxx3fbdf'

# ChatWork Room ID
ROOMID = '287xxxxx'

# API Call URL
URL = 'https://api.chatwork.com/v2'
url = '{0}/rooms/{1}/tasks'.format(URL, ROOMID)

# Elected 3 reviewer of random
ids = random.sample(reviewer,3)
to_ids = ','.join(map(str, ids))

# Review URL
mr_url = 'https://my-gitlab-server-addr/name-space/pj-name/commit/' + mr_id + ''

# Deadline of the task is 3 days later
limit = datetime.today() + timedelta(days=3)

# HTTP Request Body & Params & Headers
body = name + ' さんがコミットしたので確認してみてください(F)\n' + mr_url
params = { 'body': body, 'limit': int(limit.strftime('%s')), 'to_ids': to_ids }
headers = { 'X-ChatWorkToken': APIKEY }

# Run API Call
resp = requests.post(url,headers=headers,params=params)

ランダムとか別にいらないのですがまあターゲットのアカウントIDが3人しかいないので特に直していません
固有の値を書いたのは
APIKEY,ROOMID,reviewerとbodyのメッセージとmr_urlをマージリクエストじゃなくてコミットに変えたくらい

テストでぽちっとテストするとチャットワークに書きこまれるのでうまくいったら保存して有効化すると
たぶんコミットしたらメッセージがいくように。

アプリの登録したのでWebhookの設定いらんかった(たぶん)です。
15分おきzapで100回までなら0円でいけるっぽいです。
もうちょっと色々規模おおきくやりたい感じになったらAzureFunctionかfluentdのやつかなんかでなんとかするかんじでしょうか。

・さんこう

GitLabのコードレビュー依頼をChatWorkのタスク通知でランダムアサインしてみた | Developers.IO
Zapierとは?非エンジニアでもルーチン作業を自動化できるツールの使い方を解説|ferret [フェレット]
fluentd初心者がgitlabとChatWorkを連携してみた - くりにっき
【管理者さま向け】各種ツールとの連携について | Uniposヘルプセンター
GitLab から ChatWork へ 通知を飛ばす - 約束の地
astronaughts/chabot: Chabot is Web-hook receiver for ChatWork.
Azure Functionsを使ってGitLabのWebhookをDiscordに通知するようにしたって話 - kokeiro’s blog
Azure Functionsでエラー検知してChatworkにメッセージを送る - Qiita