codecommit과 redmine을 연계
13002 단어 RedmineCodeCommit람다AWS
개요
세상 중적으로 git→redmine은 방식이 갖추어져 있지만, codecommit→redmine은 없기 때문에 즐거운 기록.
절차는 아니지만 힌트가 될까요.
※이쪽은 PullRequest의 제휴
하고 싶은 구성도
자꾸 이런 칸지
했던 일 개요
redmine 측 설정
참고로 한 사이트는 여기
AWS 측 설정
힘든 점
여기 참고
Lambda 코드
import json
import boto3
import urllib
import urllib.request
codecommit = boto3.client('codecommit')
def lambda_handler(event, context):
references = { reference['ref'] for reference in event['Records'][0]['codecommit']['references'] }
#print("-------------------")
#print("event: " +str(event))
#print("context: " +str(context))
# event(Lambdaに渡される情報)からrepository名とcommitNoを拾ってくる
repository = event['Records'][0]['eventSourceARN'].split(':')[5]
commitNo = event['Records'][0]['codecommit']['references'][0]['commit']
try:
# codecommitからcomittした情報をもろもろ取ってくる
response = codecommit.get_commit(repositoryName=repository,commitId=commitNo)
# redmine連携に必要な情報をセット
id = response['commit']['commitId']
message = response['commit']['message']
timestamp = response['commit']['author']['date']
authorname= response['commit']['author']['name']
authoremail= response['commit']['author']['email']
# codecommitからcodecommitのURL情報を取ってくる(いらないかも)
response = codecommit.get_repository(repositoryName=repository)
codecommiturl=response['repositoryMetadata']['cloneUrlHttp'] +"/" +id
# redmineにPOSTする
# <redmine-url><projectname><repositryname>は環境に合わせて
redmine = 'http://<redmine-url>/github_hook?project_id=<projectname>&repository_id=<repositryname>'
str_data = {
'id': id,
'message': message,
'timestamp': timestamp,
'url': codecommiturl,
'author': {
'name': authorname,
'email': authoremail
}
}
headers = {
'Content-Type': 'application/json'
}
json_data = json.dumps(str_data).encode("utf-8")
# requestを作成
req = urllib.request.Request(url=redmine,data=json_data,headers=headers)
# requestを投げる
with urllib.request.urlopen(req) as res:
body = res.read().decode('utf-8')
print(body)
try:
with urllib.request.urlopen(req) as res:
body = res.read()
print(res)
print(body)
except urllib.error.HTTPError as err:
print(err.code)
except urllib.error.URLError as err:
print(err.reason)
return response['repositoryMetadata']['cloneUrlHttp']
except Exception as e:
print(e)
print('Error getting repository {}. Make sure it exists and that your repository is in the same region as this function.'.format(repository))
raise e
Reference
이 문제에 관하여(codecommit과 redmine을 연계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/turbo5522mame/items/d5a7e126f993eb185d29텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)