GitLab에서 즐거운 병합 요청 생활을 보내기 위해 한 일
12590 단어 GitLab
소개
최근 우리의 Git 저장소를 Backlog에서 GitLab으로 마이그레이션 할 수있었습니다.
그 때 병합 요청 주위에 정돈하는 것이 좋았던 2 점의 공유입니다.
동기 부여로서는, 병합 리퀘스트를 송신했을 때에 가능한 한 추가로 교환을 발생시키고 싶지 않다! 라는 것
했던 일
병합 요청 템플릿 만들기
이것은, Qiita에 오르고 있는 다른 분의 것을 참고로 했습니다.
ユル~く使うGitLab(기트랩)<Issue,MR템플릿화 계획편>
.gitlab
라는 디렉토리를 작성 merge_request_templates
라는 디렉토리를 작성 MRテンプレート.md
만들기 MR 템플릿.md
## 概要
{課題番号}-ISSUE_NAME //issueとの紐づけ
### 開発内容
- 内容を書く
### 見てほしい箇所
- 特に見てほしい箇所を書く
### その他
その他必要なメッセージを書く
이렇게 설치하면
이런 식으로 템플릿에서 선택할 수 있습니다.
병합 요청 내용을 Slack에 알립니다.
본래, GitLab > 설정 > 인테그레이션 > Slack notifications라는 Slack용의 통지가 준비되어 있다.
그러나, 담당자에게의 멘션을 붙이고 싶었기 때문에, web hook로 cloud functions를 호출해, 거기로부터 slack에 날리게 했다.
slack.pyimport slackweb
import os
def index(request):
"""Responds to any HTTP request.
Args:
request (flask.Request): HTTP request object.
Returns:
The response text or any set of values that can be turned into a
Response object using
`make_response <http://flask.pocoo.org/docs/1.0/api/#flask.Flask.make_response>`.
"""
request_json = request.get_json()
title = request_json['object_attributes']['title']
user = request_json['user']['username']
mention = return_mention(request_json['object_attributes']['assignee_id'])
project_name = request_json['project']['name']
branch = '{} => {}'.format(request_json['object_attributes']['source_branch'], request_json['object_attributes']['target_branch'])
url = request_json['object_attributes']['url']
repository = request_json['repository']['name']
description = request_json['object_attributes']['description']
author = return_mention(request_json['object_attributes']['author_id'])
if request_json['object_kind'] != 'merge_request' or request_json['event_type'] != 'merge_request':
return f'close'
# マージリクエスト申請時
if request_json['object_attributes']['merge_status'] == 'unchecked':
message = 'マージリクエストが送られました\n'
message = message + '\nプロジェクト名:' + project_name
message = message + '\nリポジトリ名:' + repository
message = message + '\nタイトル:' + title
message = message + '\nユーザー:' + user
message = message + '\nブランチ:' + branch
message = message + '\n担当者:' + mention
message = message + '\nurl:' + url
message = message + '\n\nメッセージ:\n' + description
# マージリクエスト承認時
if request_json['object_attributes']['merge_status'] == 'can_be_merged':
message = author + '\n\nリクエストがマージされました\n'
message = message + '\nプロジェクト名:' + project_name
message = message + '\nリポジトリ名:' + repository
message = message + '\nタイトル:' + title
message = message + '\nブランチ:' + branch
message = message + '\nurl:' + url
slack = slackweb.Slack(url=os.environ["SLACK_URL"])
slack.notify(text=message)
return f'success'
# ここは各自のslack user idとGitLabのuser idを紐づける
def return_mention(id):
if id == 0000000:
return '<@mention>'
if id == 1111111:
return '<@mention>'
if id == 2222222:
return '<@mention>'
if id == 3333333:
return '<@mention>'
return 'なし'
이런 느낌으로 바삭하게 실장.
비공개는 숨기고 있지만 담당자는 @로 멘션이 들어 있습니다.
무슨 일이야?
MR 템플릿을 만들어 필요한 사항을 기입
↓
그 메시지와 함께 담당자에게 통지
GitLab에서 할 수 있었기 때문에,
A씨 「B씨, ○○의 건으로 병합 리퀘스트 보내었으므로 봐 주세요」
B씨 「알고 있습니다!」
A씨 「아, 여기를 중점적으로 보고 싶어서, 아직 병합도 하지 말아주세요!」
B씨 「(빨리 가서...)」
같은 것을 줄일 수 있었을까라고 생각합니다.
쓸데없는 교환도 줄어들고, 모두가 파악하기 쉬워져 해피가 되었습니다.
Reference
이 문제에 관하여(GitLab에서 즐거운 병합 요청 생활을 보내기 위해 한 일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kazuki5555/items/19e938b83702a2e8e806
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import slackweb
import os
def index(request):
"""Responds to any HTTP request.
Args:
request (flask.Request): HTTP request object.
Returns:
The response text or any set of values that can be turned into a
Response object using
`make_response <http://flask.pocoo.org/docs/1.0/api/#flask.Flask.make_response>`.
"""
request_json = request.get_json()
title = request_json['object_attributes']['title']
user = request_json['user']['username']
mention = return_mention(request_json['object_attributes']['assignee_id'])
project_name = request_json['project']['name']
branch = '{} => {}'.format(request_json['object_attributes']['source_branch'], request_json['object_attributes']['target_branch'])
url = request_json['object_attributes']['url']
repository = request_json['repository']['name']
description = request_json['object_attributes']['description']
author = return_mention(request_json['object_attributes']['author_id'])
if request_json['object_kind'] != 'merge_request' or request_json['event_type'] != 'merge_request':
return f'close'
# マージリクエスト申請時
if request_json['object_attributes']['merge_status'] == 'unchecked':
message = 'マージリクエストが送られました\n'
message = message + '\nプロジェクト名:' + project_name
message = message + '\nリポジトリ名:' + repository
message = message + '\nタイトル:' + title
message = message + '\nユーザー:' + user
message = message + '\nブランチ:' + branch
message = message + '\n担当者:' + mention
message = message + '\nurl:' + url
message = message + '\n\nメッセージ:\n' + description
# マージリクエスト承認時
if request_json['object_attributes']['merge_status'] == 'can_be_merged':
message = author + '\n\nリクエストがマージされました\n'
message = message + '\nプロジェクト名:' + project_name
message = message + '\nリポジトリ名:' + repository
message = message + '\nタイトル:' + title
message = message + '\nブランチ:' + branch
message = message + '\nurl:' + url
slack = slackweb.Slack(url=os.environ["SLACK_URL"])
slack.notify(text=message)
return f'success'
# ここは各自のslack user idとGitLabのuser idを紐づける
def return_mention(id):
if id == 0000000:
return '<@mention>'
if id == 1111111:
return '<@mention>'
if id == 2222222:
return '<@mention>'
if id == 3333333:
return '<@mention>'
return 'なし'
MR 템플릿을 만들어 필요한 사항을 기입
↓
그 메시지와 함께 담당자에게 통지
GitLab에서 할 수 있었기 때문에,
A씨 「B씨, ○○의 건으로 병합 리퀘스트 보내었으므로 봐 주세요」
B씨 「알고 있습니다!」
A씨 「아, 여기를 중점적으로 보고 싶어서, 아직 병합도 하지 말아주세요!」
B씨 「(빨리 가서...)」
같은 것을 줄일 수 있었을까라고 생각합니다.
쓸데없는 교환도 줄어들고, 모두가 파악하기 쉬워져 해피가 되었습니다.
Reference
이 문제에 관하여(GitLab에서 즐거운 병합 요청 생활을 보내기 위해 한 일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazuki5555/items/19e938b83702a2e8e806텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)