codecommit의 PullRequest를 redmine 티켓에 연결
개요
이것의 시리즈
codecommit에서 pullrequest했을 때에, 관련하는 redmine의 티켓의 코멘트에 통지를 내고 싶어서 고맙게 한 기록.
절차는 아니지만 힌트가 될까요.
이런 식으로.
하고 싶은 구성도
자꾸 이런 칸지
했던 일 개요
전제
codecommit에서 브랜치를 끊을 때 반드시 redmine의 티켓 번호를 기재하는 운용 룰로 하고 있었으므로, 갱신 대상의 티켓 번호는 브랜치명으로부터 가져오기로 했다
redmine 측 설정
API 사용
AWS 측 설정
Lambda 설정하기
python_redmine을 사용하도록 LambdaLayer를 구성했습니다
codecommit에 알림 규칙을 설정하고 codecommit에서 이벤트가있을 때 SNS에 메시지가 날아갑니다.
힘든 점
※여기에 대해 좋은 방법이나 메카니즘을 알면 꼭 가르쳐 주세요
# このような取り出しをしたら「TypeError: string indices must be integers」になった
# eventName = event['Records'][0]['Sns']['Message']['detail']['event']
# どうも"Message"は単なるstringみたいなので、
# 仕方ないので一度json形式に変換して必要なキーを取り出した
Message_str = event['Records'][0]['Sns']['Message']
Message = json.loads(Message_str)
eventName = Message['detail']['event']
Lambda 코드
import json
from redminelib import Redmine
import re
def lambda_handler(event, context):
# SNSのメッセージからcodecommitのメッセージを抜き出す
# ただしstringになってしまうので、最後にjson.loadsをする
Message_str = event['Records'][0]['Sns']['Message']
Message = json.loads(Message_str)
# print("Message " +str(Message))
# redmineに投げるリクエストに必要な要素を取り出す
branchName = Message['detail']['sourceReference'].split('/')[2]
eventName = Message['detail']['event']
notificationBody = Message['detail']['notificationBody']
#print("branchName " +str(branchName))
#print("eventName " +str(eventName))
#print("notificationBody "+str(notificationBody))
# redmineを更新する
# 対象チケット番号をブランチ名から取得する
m = re.search(r'#\d+', branchName)
issueNo_str = str(m.group())
# もしも対象チケット番号がなかったら処理しない、あったら処理する
if issueNo_str:
issueNo = int(issueNo_str[1:])
redmine = Redmine('http://<redmineurl>/', username='admin', password='xxxxxx')
issue = redmine.issue.get(issueNo)
issue.notes = notificationBody
issue.save()
#print(issue)
#print(issue.notes)
Reference
이 문제에 관하여(codecommit의 PullRequest를 redmine 티켓에 연결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/turbo5522mame/items/48f1fdcd95a7fd4409f4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)