GitLab에서 즐거운 병합 요청 생활을 보내기 위해 한 일

12590 단어 GitLab

소개



최근 우리의 Git 저장소를 Backlog에서 GitLab으로 마이그레이션 할 수있었습니다.
그 때 병합 요청 주위에 정돈하는 것이 좋았던 2 점의 공유입니다.
동기 부여로서는, 병합 리퀘스트를 송신했을 때에 가능한 한 추가로 교환을 발생시키고 싶지 않다! 라는 것

했던 일


  • 병합 요청 템플릿 만들기
  • 병합 요청 내용을 Slack에 알립니다

  • 병합 요청 템플릿 만들기



    이것은, 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.py
    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씨 「(빨리 가서...)」

    같은 것을 줄일 수 있었을까라고 생각합니다.
    쓸데없는 교환도 줄어들고, 모두가 파악하기 쉬워져 해피가 되었습니다.

    좋은 웹페이지 즐겨찾기