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中变量的作用域
Jun 16 Python
python中logging包的使用总结
Feb 28 Python
Python遍历numpy数组的实例
Apr 04 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
May 19 Python
解决pycharm 误删掉项目文件的处理方法
Oct 22 Python
python将字符串转换成json的方法小结
Jul 09 Python
django表单的Widgets使用详解
Jul 22 Python
python网络编程 使用UDP、TCP协议收发信息详解
Aug 29 Python
Pytest框架之fixture的详细使用教程
Apr 07 Python
Python如何使用ConfigParser读取配置文件
Nov 12 Python
使用Python爬取小姐姐图片(beautifulsoup法)
Feb 11 Python
python读取并查看npz/npy文件数据以及数据显示方法
Apr 14 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中的正规表达式(二)
2006/10/09 PHP
PHP var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
2012/08/14 PHP
php跨域cookie共享使用方法
2014/02/20 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
2015/10/10 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
使用js画图之饼图
2015/01/12 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
jQuery Validate验证框架详解(推荐)
2016/12/17 Javascript
基于jQuery实现左侧菜单栏可折叠功能
2016/12/27 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
2017/06/23 jQuery
激动人心的 Angular HttpClient的源码解析
2017/07/10 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
Python实现的递归神经网络简单示例
2017/08/11 Python
基于Python中求和函数sum的用法详解
2018/06/28 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
pyqt远程批量执行Linux命令程序的方法
2019/02/14 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
Python异常处理例题整理
2019/07/07 Python
keras的siamese(孪生网络)实现案例
2020/06/12 Python
如何表示python中的相对路径
2020/07/08 Python
酒吧总经理岗位职责
2013/12/10 职场文书
会计专业的自荐信
2013/12/12 职场文书
卫生院健康教育实施方案
2014/06/07 职场文书
反四风个人对照检查材料思想汇报
2014/09/25 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
家长会主持词开场白
2015/05/29 职场文书
军训新闻稿范文
2015/07/17 职场文书
Redis 哨兵集群的实现
2021/06/18 Redis