Python 3 GitLab API 를 사용 하여 분기 일괄 병합
문장 전언
매주 5 오전 12 시 까지 프로젝트 의 각 조 의 개발 분 지 를 소프트 집합 창고 분 지 를 합병 해 야 하 며,10 개 프로젝트 에서 merge 를 진행 해 야 한다.
프로그래머 들 은 일반적으로 번 거 로 움 을 싫어 하기 때문에 이 스 크 립 트 를 작성 하여 대량 merge 를 진행 하고 통합 합 니 다.
또한,프로젝트 가 온라인 또는 버그 복구 등 상황 을 겪 으 면 ut,release,master 등 분기 로 통합 되 어야 하 며,이 스 크 립 트 의 사용 상황 을 만족 시 킬 수 있 습 니 다.
이러한 기능 성 스 크 립 트 와 유사 합 니 다.일반적으로 Python 을 사용 하여 작성 하 는 습관 이 있 습 니 다.GitLab 에서 제공 하 는 REST API 를 통 해 호출 합 니 다.
GitLab 은 매우 풍부 한 REST API 조작 을 제공 하 므 로 공식 사이트 주 소 를 검색 하여 볼 수 있 습 니 다.
대본 사고
인터넷 에서 여러분 이 제공 하 는 일부 스 크 립 트 를 참고 하여 프로젝트 자체 와 결합 하여 이 방향 을 제공 합 니 다.
GitLab 에서 개인 영패 획득 Token
실행 전 준비
우선,컴퓨터 에 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 통합 분기 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.