LoginSignup
2
3

More than 5 years have passed since last update.

chatworkにzapierでgitlabから通知する

Last updated at Posted at 2018-06-05

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

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

・事前に

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

zapier-gitlab-app-regist.png
上のは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

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3