Python调用Gitlab API 示例-01

#!/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)
posted @ 2020-04-23 17:00  刘-帅  阅读(785)  评论(0)    收藏  举报