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记录运行pid,并在需要时kill掉它们的实例
Jan 16 Python
Python中py文件引用另一个py文件变量的方法
Apr 29 Python
python实现飞机大战微信小游戏
Mar 21 Python
Python多进程写入同一文件的方法
Jan 14 Python
python字典一键多值实例代码分享
Jun 14 Python
win10环境下配置vscode python开发环境的教程详解
Oct 16 Python
基于Python实现签到脚本过程解析
Oct 25 Python
Python实现动态循环输出文字功能
May 07 Python
Pytorch环境搭建与基本语法
Jun 03 Python
python实现自动清理重复文件
Aug 24 Python
手把手教你怎么用Python实现zip文件密码的破解
May 27 Python
Python+Selenium实现读取网易邮箱验证码
Mar 13 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模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
mac系统下安装多个php并自由切换的方法详解
2017/04/21 PHP
PHP如何搭建百度Ueditor富文本编辑器
2018/09/21 PHP
简单的php购物车代码
2020/06/05 PHP
改进:论坛UBB代码自动插入方式
2006/12/22 Javascript
JS效率个人经验谈(8-15更新),加入range技巧
2007/01/09 Javascript
javascript的offset、client、scroll使用方法详解
2012/12/25 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
详解用node编写自己的cli工具
2017/05/23 Javascript
js获取一组日期中最近连续的天数
2017/05/25 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
总结js函数相关知识点
2018/02/27 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
python开启多个子进程并行运行的方法
2015/04/18 Python
windows下ipython的安装与使用详解
2016/10/20 Python
PYTHON EVAL的用法及注意事项解析
2019/09/06 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
2019/09/10 Python
Python3并发写文件与Python对比
2019/11/20 Python
python3 Scrapy爬虫框架ip代理配置的方法
2020/01/17 Python
Python进程间通信multiprocess代码实例
2020/03/18 Python
python3中的logging记录日志实现过程及封装成类的操作
2020/05/12 Python
Python填充任意颜色,不同算法时间差异分析说明
2020/05/16 Python
MAC彩妆英国官网:M·A·C UK
2018/05/30 全球购物
英国复古和经典球衣网站:Vintage Football Shirts
2018/10/05 全球购物
荷兰照明、灯具和配件网上商店:dmlights
2019/08/25 全球购物
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
2014年清明节寄语
2014/04/03 职场文书
另类冲刺标语
2014/06/24 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
MySQL 使用事件(Events)完成计划任务
2021/05/24 MySQL