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 相关文章推荐
python使用递归解决全排列数字示例
Feb 11 Python
Python 正则表达式(转义问题)
Dec 15 Python
django之session与分页(实例讲解)
Nov 13 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
May 15 Python
详解Python匿名函数(lambda函数)
Apr 19 Python
python Django编写接口并用Jmeter测试的方法
Jul 31 Python
python使用numpy实现直方图反向投影示例
Jan 17 Python
Python项目跨域问题解决方案
Jun 22 Python
Python定时任务APScheduler安装及使用解析
Aug 07 Python
PyQT5速成教程之Qt Designer介绍与入门
Nov 02 Python
python连接mongodb数据库操作数据示例
Nov 30 Python
Python基础知识学习之类的继承
May 31 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
windows环境下php配置memcache的具体操作步骤
2013/06/09 PHP
php中的比较运算符详解
2013/10/28 PHP
PHP中使用file_get_contents post数据代码例子
2015/02/13 PHP
php工具型代码之印章抠图
2018/07/18 PHP
PHP合并两个或多个数组的方法
2019/01/20 PHP
wordpress之js库集合研究介绍
2007/08/17 Javascript
javaScript Array(数组)相关方法简述
2009/07/25 Javascript
js优化针对IE6.0起作用(详细整理)
2012/12/25 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
基于jquery实现三级下拉菜单
2016/05/10 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
JavaScript中变量、指针和引用功能与操作示例
2018/08/04 Javascript
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
讲解Python中的递归函数
2015/04/27 Python
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
pytorch torch.expand和torch.repeat的区别详解
2019/11/05 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
python连接PostgreSQL过程解析
2020/02/09 Python
Django如何在不停机的情况下创建索引
2020/08/02 Python
Python configparser模块应用过程解析
2020/08/14 Python
英国电器零售商:PRC Direct
2018/06/21 全球购物
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
中职生自荐信
2013/10/13 职场文书
毕业生物理教师求职信
2013/10/17 职场文书
个人自荐信
2013/12/05 职场文书
红领巾心向党广播稿
2014/01/19 职场文书
军人离婚协议书样本
2014/10/21 职场文书
保密工作整改报告
2014/11/06 职场文书
领导激励员工的演讲稿,各种会上用得到,建议收藏
2019/08/13 职场文书
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang