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 相关文章推荐
详解Python3操作Mongodb简明易懂教程
May 25 Python
Python程序退出方式小结
Dec 09 Python
使用python和pygame绘制繁花曲线的方法
Feb 24 Python
Django中的forms组件实例详解
Nov 08 Python
python监测当前联网状态并连接的实例
Dec 18 Python
Python设计模式之工厂方法模式实例详解
Jan 18 Python
将pip源更换到国内镜像的详细步骤
Apr 07 Python
python操作excel让工作自动化
Aug 09 Python
python3中的eval和exec的区别与联系
Oct 10 Python
使用opencv将视频帧转成图片输出
Dec 10 Python
pytorch进行上采样的种类实例
Feb 18 Python
keras自定义回调函数查看训练的loss和accuracy方式
May 23 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
完美解决thinkphp验证码出错无法显示的方法
2014/12/09 PHP
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
JavaScript获取页面中超链接数量的方法
2015/11/09 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
jQuery EasyUI常用数据验证汇总
2016/09/18 Javascript
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
浅谈React 服务器端渲染的使用
2018/05/08 Javascript
深入浅析var,let,const的异同点
2018/08/07 Javascript
element UI upload组件上传附件格式限制方法
2018/09/04 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
2020/04/07 Javascript
Javascript confirm多种使用方法解析
2020/09/25 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
Python的Django框架中的数据库配置指南
2015/07/17 Python
Python冲顶大会 快来答题!
2018/01/17 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
python实现Flappy Bird源码
2018/12/24 Python
Python远程视频监控程序的实例代码
2019/05/05 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
Python 元组拆包示例(Tuple Unpacking)
2019/12/24 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
python3 Scrapy爬虫框架ip代理配置的方法
2020/01/17 Python
深入浅析css3 中display box使用方法
2015/11/25 HTML / CSS
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
俄罗斯玩具、儿童用品、儿童服装和鞋子网上商店:MyToys.ru
2019/10/14 全球购物
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
外贸业务员工作职责
2014/01/06 职场文书
公司门卫管理制度
2014/02/01 职场文书
离婚协议书怎么写2014
2014/09/30 职场文书
2015年艾滋病防治工作总结
2015/05/22 职场文书
郭明义观后感
2015/06/08 职场文书
讲座新闻稿
2015/07/18 职场文书
学困生转化工作总结
2015/08/13 职场文书