backlog→hubot→slack 제휴
개요
backlog의 과제나 위키 등의 업데이트 정보를 slack에 전달하도록 합니다.
갱신 정보가 메일에 일일이 닿아 기분 좋은 것을 해소할 수 있습니다.
환경 구성
backlog -> hubot 서버(겸 개발 서버) -> slack
hubot 관련 기사에서는 heroku를 사용한 것이 많지만,
자체적으로 hubot 서버를 준비하는 구성입니다.
기사 작성시의 환경
backlog -> hubot 서버(겸 개발 서버) -> slack
hubot 관련 기사에서는 heroku를 사용한 것이 많지만,
자체적으로 hubot 서버를 준비하는 구성입니다.
기사 작성시의 환경
1. slack 측 준비
1-1
slack으로 새로운 channel을 작성.
integration을 추가합니다.
1-2
integration 목록에서 Hubot을 선택합니다.
1-3
Hubot의 설정 화면으로 천이하기 때문에, 추가하고 싶은 bot의 사용자명을 입력한다.
ex) hubot, backlog
1-4
토큰이 발행되므로, 이것을 나중에 프로그램 측에서 설정한다.
기타 설정 정보를 확인하고 Save Integration을 누릅니다.
1-5
디폴트라면, general 밖에 참가하고 있지 않으므로, 방금 만든 channel에 bot 유저를 invite 해 둔다.
이것으로 slack측은 준비 완료.
2. hubot 환경 구축
2-1. 병아리 작성
임의의 디렉토리에서 아래와 같이 yo 명령을 실행하면 hubot의 병아리가 작성된다.
mkdir backlog-to-slack
cd backlog-to-slack
yo hubot
대화형식으로 아래와 같이 대답한다.
? Owner: Your Name <[email protected]> #<-任意
? Bot name: hubot #<-任意
? Description: A simple helpful robot for you #<-任意
? Bot adapter: slack #<-必ずslackにする
병아리가 만들어집니다.
2-2. bot 스크립트 작성
scripts/backlog-notification.coffee
# Description:
# Backlog to Slack
#
# Commands:
# None
backlogUrl = 'https://your.backlog.jp/'
module.exports = (robot) ->
robot.router.post "/<任意のパス>/:room", (req, res) ->
{ room } = req.params
{ body } = req
try
switch body.type
when 1
label = '課題の追加'
when 2, 3
# 「更新」と「コメント」は実際は一緒に使うので、一緒に。
label = '課題の更新'
when 5
label = 'wikiの追加'
when 6
label = 'wikiの更新'
when 8
label = 'ファイルの追加'
when 9
label = 'ファイルの更新'
else
# 課題関連以外はスルー
# 投稿メッセージを整形
url = "#{backlogUrl}view/#{body.project.projectKey}-#{body.content.key_id}"
if body.content.comment?.id?
url += "#comment-#{body.content.comment.id}"
message = "*Backlog #{label}*\n"
message += "[#{body.project.projectKey}-#{body.content.key_id}] - "
message += "#{body.content.summary} _by #{body.createdUser.name}_\n>>> "
if body.content.comment?.content?
message += "#{body.content.comment.content}\n"
message += "#{url}"
# Slack に投稿
if message?
robot.messageRoom room, message
res.end "OK"
else
robot.messageRoom room, "Backlog integration error."
res.end "Error"
catch error
robot.send
res.end "Error"
2-3. 시작 스크립트 작성
원래 시작 스크립트를 forever에서 데몬화하도록 다음과 같이 변경
#!/bin/sh
set -e
npm install
export PORT="8081"
export PATH="node_modules/.bin:node_modules/hubot/node_modules/.bin:$PATH"
export HUBOT_SLACK_TOKEN="<hubotアクセストークン>"
forever start -c coffee node_modules/.bin/hubot --name "gitbucket-to-slack" --adapter slack
PORT는 Hubot을 실행하고 싶은 포트를 지정. 다른 프로세스에서 이용하고 있는 포트를 지정하면 에러가 되므로 주의.
HUBOT_SLACK_TOKEN은 slack 쪽에서 발행된 액세스 토큰을 지정.
--name은, 병아리 작성시의 name을 지정.
2-4. 시작
cd <path to hubot>
bin/hubot
병아리 작성한 디렉토리에서 bin/hubot으로 프로그램 기동.
3.backlog에서 Webhook 설정하기
프로젝트 설정에서 hubot이 시작하는 URL을 설정합니다.
http://server:port/hubot/room
위의 형식으로 hubot이 요청을 기다리고 있습니다.
각각,
server : 서버의 IP 또는 도메인
port : 시작 스크립트에 지정된 포트
hubot:bot 스크립트에서 지정한 <임의의 경로>
room : 날고 싶은 slack의 channel 이름
그리고는, backlog측에서 과제 추가 등 실시하면 slack에 날 것!
제대로 작동하지 않으면 webhook URL이 올바른지, forever에서 로그를 확인하여 hubot이 올바르게 시작되었는지, slack 액세스 토큰이 유효한지 등을 확인하십시오.
3. 참고 URL
h tp // 기효. jp/에서 v/세리아 l/01/후보 t/0005
h tp : // 쿠이타. 코 m / 마유코 jp / / ms / 아 9 아 9408c21 아 761 아 db7d0
ぃ tp // 코 m / 미소 페소 / ms / 1f418 d02 89234499b3
h tp // w w. 그래도 ds-std. 이. jp / 역시 dsb㎉ / 2125. HTML
htp : // bg. 후미…
h tp :小m/こん_湯/てMS/CDC452bcd2っb89f85에 1
Reference
이 문제에 관하여(backlog→hubot→slack 제휴), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yo-iida/items/c69fe7b6afb2c082b822텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)