python调用gitlab api自动合并分支_Python调用Gitlab API 示例-02

#!/usr/bin/env python3

# coding: utf-8

"""

Created by Liushuai at 2020/3/24

"""

import sys

import datetime

import gitlab

import urllib3

import logging

from multiprocessing.pool import ThreadPool

year = datetime.datetime.now().isocalendar()[0]

weeks = datetime.datetime.now().isocalendar()[1]

gitlab_url = "https://git.example.com"

gitlab_private_token = "xxxxxxxxxxxxxxxxxx"

logging.basicConfig(format="%(asctime)s %(levelname)s %(message)s",

datefmt="%Y-%m-%d %H:%M:%S",

filename=r"E:\liush\Pycharm\gitlab\log.log"

)

projects_info = [{"p_name": "users", "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 创建成功。" % (p_name, p_name, version))

except Exception as e:

print("ERROR [%s] release_%s_%s" % (p_name, p_name, version), e)

try:

p_obj.branches.create({"branch": "test_%s_%s" % (p_name, version), "ref": "release_%s_%s" % (p_name, version)})

print("INFO [%s]: Branch test_%s_%s 创建成功。" % (p_name, p_name, version))

except Exception as e:

print("ERROR [%s] test_%s_%s" % (p_name, p_name, version), e)

try:

p_obj.branches.create({"branch": "opt_%s_%s" % (p_name, version), "ref": "test_%s_%s" % (p_name, version)})

print("INFO [%s]: Branch opt_%s_%s 创建成功。" % (p_name, p_name, version))

except Exception as e:

print("ERROR [%s] opt_%s_%s" % (p_name, p_name, version), e)

def delete_branches(self, p_name, p_id, version):

p_obj = self.git_obj.projects.get(p_id)

try:

p_obj.branches.delete("release_%s_%s" % (p_name, version))

print("INFO [%s]: Branch release_%s_%s 删除成功。" % (p_name, p_name, version))

except Exception as e:

print("ERROR [%s] release_%s_%s" % (p_name, p_name, version), e)

try:

p_obj.branches.delete("test_%s_%s" % (p_name, version))

print("INFO [%s]: Branch test_%s_%s 删除成功。" % (p_name, p_name, version))

except Exception as e:

print("ERROR [%s] test_%s_%s" % (p_name, p_name, version), e)

try:

p_obj.branches.delete("opt_%s_%s" % (p_name, version))

print("INFO [%s]: Branch opt_%s_%s 删除成功。" % (p_name, p_name, version))

except Exception as e:

print("ERROR [%s] opt_%s_%s" % (p_name, p_name, version), e)

def create(pt_name, pt_id, ver):

git_branches_manager = gitlabBranchesManager()

git_branches_manager.create_branches(pt_name, pt_id, ver)

def delete(pt_name, pt_id, ver):

git_branches_manager = gitlabBranchesManager()

git_branches_manager.delete_branches(pt_name, pt_id, ver)

if __name__ == "__main__":

for project in projects_info:

p_name = project["p_name"]

p_id = project["p_id"]

if sys.argv[1] == "create":

version = str(year) + "W" + str(weeks)

create(p_name, p_id, version)

elif sys.argv[1] == "delete":

version = str(year) + "W" + str(weeks - 1)

delete(p_name, p_id, version)

# if __name__ == "__main__":

# pool = ThreadPool(processes=40)

# for project in projects_info:

# p_name = project["p_name"]

# p_id = project["p_id"]

# if sys.argv[1] == "create":

# version = str(year) + "W" + str(weeks)

# pool.apply_async(create, (p_name, p_id, version))

# elif sys.argv[1] == "delete":

# version = str(year) + "W" + str(weeks - 1)

# pool.apply_async(delete, (p_name, p_id, version))

# pool.close()

# pool.join()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值