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爬虫教程之爬取百度贴吧并下载的示例
Mar 07 Python
python+matplotlib绘制旋转椭圆实例代码
Jan 12 Python
Python针对给定列表中元素进行翻转操作的方法分析
Apr 27 Python
Python中函数参数调用方式分析
Aug 09 Python
python 利用pandas将arff文件转csv文件的方法
Feb 12 Python
django解决订单并发问题【推荐】
Jul 31 Python
python scipy卷积运算的实现方法
Sep 16 Python
解决Python中回文数和质数的问题
Nov 24 Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
Apr 10 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
Nov 25 Python
Python之matplotlib绘制折线图
Apr 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 filter_var() 函数 Filter 函数
2012/04/25 PHP
php生成数字字母的验证码图片
2015/07/14 PHP
php中的依赖注入实例详解
2019/08/14 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
javascript globalStorage类代码
2009/06/04 Javascript
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
jquery select下拉框操作的一些说明
2010/04/02 Javascript
js post方式传递提交的实现代码
2010/05/31 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
js判断滚动条是否已到页面最底部或顶部实例
2014/11/20 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
javascript转换静态图片,增加粒子动画效果
2015/05/28 Javascript
JavaScript实现Fly Bird小游戏
2016/12/15 Javascript
javascript实现去除HTML标签的方法
2016/12/26 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
2017/07/24 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
安装vue-cli的简易过程
2018/05/22 Javascript
vue实现的上拉加载更多数据/分页功能示例
2019/05/25 Javascript
微信小程序实现订单倒计时
2020/11/01 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
vue 在methods中调用mounted的实现操作
2020/08/07 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS VG
2014/05/25 DOTA
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
2019/08/12 Python
浅析python函数式编程
2020/09/26 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
2020/11/27 Python
车队司机自我鉴定
2014/03/02 职场文书
讲座主持词
2014/03/20 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书
Html5调用企业微信的实现
2021/04/16 HTML / CSS
Java 中的 Unsafe 魔法类的作用大全
2021/06/26 Java/Android
Python采集壁纸并实现炫轮播
2022/04/30 Python