Python如何使用Gitlab API实现批量的合并分支


Posted in Python onNovember 27, 2019

这篇文章主要介绍了Python如何使用Gitlab API实现批量的合并分支,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1.需求:每次大批量上线完成后,都会进行将hotfix合并到Master,合并到test/uat等等重复操作(上线发布后自动合并master已完成)。

2.现实:在完成发布后自动合并master后,可能还有的项目人员忘记合并到其他分支的情况,so

#!/usr/bin/python3
#coding=utf-8
# 自动合并项目dev分支到其他分支,当合并失败删除merge请求
import sys
import datetime
import urllib.request
import gitlab


#项目名和项目ID 
project_name = "python-jmmei"
project_list=[265]

# 生成gitlab对象
gitlab_url = 'http://gitlab.baidu.com'
token = 'xxxxxxxxxxxx'
old_branch="hotfix"
new_branches=["test","uat","uat_match"]
#验证登录
gl = gitlab.Gitlab(gitlab_url, token)


for project_id in project_list:
  project = gl.projects.get(project_id)
  print(project.id)
  for proj in new_branches:
    print("正在合并项目:%s的%s分支到%s分支"%(project_name,old_branch,proj))
    # mr合并请求的对象
    mr = None
    try:
      # 创建mr
      mr = project.mergerequests.create({'source_branch': old_branch,
                      'target_branch': proj,
                      'title': "%s to %s ---"%(old_branch,proj) + datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                     })
    
      # 接受合并请求
      url = "%s/api/v3/projects/%s/merge_request/%s/merge"%(gitlab_url,project.id, mr.id)
      headers = {
        "PRIVATE-TOKEN":token
      }
      req = urllib.request.Request(url=url,headers=headers,method="PUT")
      resp = urllib.request.urlopen(req)
      # print(resp)
      print("合并到分支%s成功,结束...\r\n"%(proj))
    except Exception as e:
      print("合并出错,可能有冲突未解决或者%s分支并没有更新,异常信息:\r\n"%(old_branch))
      print(e)
      # 把刚创建的mr请求删除
      #v4版本支持 project.mergerequests.delete(mr.id)
      mr.delete()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
数据挖掘之Apriori算法详解和Python实现代码分享
Nov 07 Python
Python使用xlrd读取Excel格式文件的方法
Mar 10 Python
浅谈python中的__init__、__new__和__call__方法
Jul 18 Python
pandas的object对象转时间对象的方法
Apr 11 Python
python for循环输入一个矩阵的实例
Nov 14 Python
解决PyCharm的Python.exe已经停止工作的问题
Nov 29 Python
Ubuntu18.04下python版本完美切换的解决方法
Jun 14 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
Jul 11 Python
如何在python中写hive脚本
Nov 08 Python
python的faker库用法
Nov 28 Python
python实现将列表中各个值快速赋值给多个变量
Apr 02 Python
python模板入门教程之flask Jinja
Apr 11 Python
python [:3] 实现提取数组中的数
Nov 27 #Python
在Python中等距取出一个数组其中n个数的实现方式
Nov 27 #Python
python中的数组赋值与拷贝的区别详解
Nov 26 #Python
使用python切片实现二维数组复制示例
Nov 26 #Python
Python高级特性——详解多维数组切片(Slice)
Nov 26 #Python
Python实现随机取一个矩阵数组的某几行
Nov 26 #Python
Python 求数组局部最大值的实例
Nov 26 #Python
You might like
php curl的深入解析
2013/06/02 PHP
PHP反向代理类代码
2014/08/15 PHP
php生成年月日下载列表的方法
2015/04/24 PHP
Symfony2学习笔记之模板用法详解
2016/03/17 PHP
YII框架常用技巧总结
2019/04/27 PHP
javascript 全角转换实现代码
2009/07/17 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
2013/06/17 Javascript
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
node.js中的events.emitter.once方法使用说明
2014/12/10 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
使用jsonp实现跨域获取数据实例讲解
2016/12/25 Javascript
老生常谈javascript的面向对象思想
2017/08/22 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
Vue.js组件高级特性实例详解
2018/12/24 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
2019/05/09 Javascript
用Python操作字符串之rindex()方法的使用
2015/05/19 Python
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
Python实现XML文件解析的示例代码
2018/02/05 Python
Django分页功能的实现代码详解
2019/07/29 Python
python内存管理机制原理详解
2019/08/12 Python
基于Python中的yield表达式介绍
2019/11/19 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
Python中的流程控制详解
2021/02/18 Python
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
商场端午节活动方案
2014/01/29 职场文书
颁奖晚会主持词
2014/03/25 职场文书
个人校本研修方案
2014/05/26 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
人身损害赔偿协议书格式
2014/11/01 职场文书
六年级学生评语大全
2014/12/26 职场文书
2019年公司卫生管理制度样本
2019/08/21 职场文书
python中如何对多变量连续赋值
2021/06/03 Python
JavaScript实例 ODO List分析
2022/01/22 Javascript