Python 3 GitLab API 를 사용 하여 분기 일괄 병합

在这里插入图片描述
문장 전언
매주 5 오전 12 시 까지 프로젝트 의 각 조 의 개발 분 지 를 소프트 집합 창고 분 지 를 합병 해 야 하 며,10 개 프로젝트 에서 merge 를 진행 해 야 한다.
프로그래머 들 은 일반적으로 번 거 로 움 을 싫어 하기 때문에 이 스 크 립 트 를 작성 하여 대량 merge 를 진행 하고 통합 합 니 다.
또한,프로젝트 가 온라인 또는 버그 복구 등 상황 을 겪 으 면 ut,release,master 등 분기 로 통합 되 어야 하 며,이 스 크 립 트 의 사용 상황 을 만족 시 킬 수 있 습 니 다.
이러한 기능 성 스 크 립 트 와 유사 합 니 다.일반적으로 Python 을 사용 하여 작성 하 는 습관 이 있 습 니 다.GitLab 에서 제공 하 는 REST API 를 통 해 호출 합 니 다.
GitLab 은 매우 풍부 한 REST API 조작 을 제공 하 므 로 공식 사이트 주 소 를 검색 하여 볼 수 있 습 니 다.
대본 사고
인터넷 에서 여러분 이 제공 하 는 일부 스 크 립 트 를 참고 하여 프로젝트 자체 와 결합 하여 이 방향 을 제공 합 니 다.
GitLab 에서 개인 영패 획득 Token
  • 합병 이 필요 한 항목 ID 획득
  • 4.567917.합병 이 필요 한 프로젝트 의 소스 분기 와 목표 분기 가 져 오기
  • GitLab 에 대응 하 는 Token 이 정확 한 지 검증 합 니 다
  • 합병 요청 을 진행 하면 실패 하면 해당 하 는 합병 요청 을 삭제 합 니 다
  • 인터넷 에서 찾 은 대부분의 실행 이 성공 하지 못 했 습 니 다.이전에 성공 할 수 있 었 을 수도 있 지만 GitLab 의 API 3->4 업그레이드 에 따라 인터넷 대부분의 스 크 립 트 가 실 패 했 습 니 다.
    실행 전 준비
    우선,컴퓨터 에 python 3 운영 환경 을 설치 하고 해당 하 는 import 패 키 지 를 다운로드 해 야 합 니 다.가장 중요 한 것 은 토 큰 토 큰 을 가 져 오 는 것 입 니 다.
    GitLab 설정 페이지 에 로그 인하 고 방문 토 큰 을 클릭 합 니 다.
    나 는 중국 어 를 설 치 했 지만 차이 가 크 지 않 아서 Token 은 그래도 잘 알 아 본다.

    Token 이름,Token 유효기간,그리고 해당 하 는 권한 범 위 를 순서대로 입력 하고 해당 하 는 Token 을 해당 하 는 스 크 립 트 로 복사 하면 됩 니 다.

    구현 코드
    
    import urllib.request
    import gitlab
    
    # ========================================    =================================================
    
    # ⚠️    ,      
    project_name = "xxxx"
    # ⚠️        ID,         ,          source_branch、target_branches     
    project_id_list = ['xxxx']
    # ⚠️    gitlab   
    gitlab_url = 'xxxx'
    # ⚠️           token
    token = 'xxxx'
    # ⚠️   source_branch    merge target_branches     
    source_branch = 'test'
    target_branches = ['master']
    
    # =========================================    ================================================
    
    
    #     
    gl = gitlab.Gitlab(gitlab_url, token)
    
    
    def main():
     for project_id in project_id_list:
      project = gl.projects.get(project_id)
      print(' >>>   ID :: [%s],      :: [%s] ' % (str(project.id), project_name))
      for target in target_branches:
       print(" >>>        :: [%s]   [%s]     [%s]   " % (project_name, source_branch, target))
       # mr       
       mr = None
       try:
        #    merge request
        mr = project.mergerequests.create({'source_branch': source_branch,
                 'target_branch': target,
                 'title': "Merge branch '%s' into '%s'" % (
                  source_branch, target)
                 })
    
        #       
        url = '%s/api/v4/projects/%s/merge_requests/%s/merge' % (gitlab_url, project.id, mr.iid)
        print(' >>> Merge url :: [%s], title :: [%s] ' % (url, mr.title))
    
        #   /      ,       
        headers = {"PRIVATE-TOKEN": token}
        req = urllib.request.Request(url=url, headers=headers, method="PUT")
        resp = urllib.request.urlopen(req)
        if resp.code == 200:
         print(" >>>         [%s]   ,   ... \r
    " % target) else: mr.delete() except Exception as e: print(" >>> , [%s] , :: \r
    " % source_branch, str(e)) # merge mr.delete() if __name__ == "__main__": main()
    총결산
    Python 3 에서 GitLab API 를 사용 하여 분기 통합 을 대량으로 진행 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 Python 통합 분기 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기