#!/usr/bin/env python3
# coding: utf-8
"""
Created by Liushuai at 2020/3/24
"""
import sys
import datetime
import gitlab
import urllib3
gitlab_url = "https://git.example.com"
gitlab_private_token = "xxxxxxxxxxxxxxxxxx"
projects_info = [{"p_name": "user", "p_id": 45}, {"p_name": "pricing", "p_id": 134},
{"p_name": "data", "p_id": 27}, {"p_name": "marketing", "p_id": 55},
{"p_name": "order", "p_id": 37}, {"p_name": "schedule", "p_id": 20},
{"p_name": "goods", "p_id": 40}, {"p_name": "purchase", "p_id": 36},
]
urllib3.disable_warnings()
class gitlabBranchesManager:
def __init__(self):
self.git_obj = gitlab.Gitlab(url=gitlab_url, private_token=gitlab_private_token, ssl_verify=False, per_page=50)
def create_branches(self, p_name, p_id, version):
p_obj = self.git_obj.projects.get(p_id)
try:
p_obj.branches.create({"branch": "release_%s_%s" % (p_name, version), "ref": "master"})
print("INFO [%s]: Branch release_%s_%s created successfully。" % (p_name, p_name, version))
except Exception as e:
print("ERROR [%s] release_%s_%s" % (p_name, p_name, version), e)
def merge_branches(self, p_id, source_branch, target_branch):
p_obj = self.git_obj.projects.get(p_id)
try:
m_obj = p_obj.mergerequests.create({'source_branch': source_branch,
'target_branch': target_branch,
'title': 'Merge %s to %s' % (source_branch, target_branch)})
m_obj.save()
except Exception as e:
print("ERROR: ", e)
if __name__ == "__main__":
gt_manager = gitlabBranchesManager()
for project in projects_info:
if project["p_name"] == sys.argv[1]:
p_id = project["p_id"]
if sys.argv[2] == "create":
p_name = sys.argv[1]
version = sys.argv[3]
gt_manager.create_branches(p_name, p_id, version)
elif sys.argv[2] == "merge":
source_branch = sys.argv[3]
target_branch = sys.argv[4]
gt_manager.merge_branches(p_id, source_branch, target_branch)