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()

欢迎有更多IT朋友一起多交流学习.......

Python 操作Gitlab-API 实现批量的合并分支的更多相关文章

  1. python操作ansible api示例

    #!/usr/bin/env python # -*- coding:utf-8 -*- import json import shutil from collections import named ...

  2. gitlab api批量操作 批量添加用户

    import os,time import requests,json # def downloadFile(name, url): # headers = {'Proxy-Connection': ...

  3. Python 操作 GA API 指南

    因为需要写一个 Blog Feature 的缘故,所以接触了下 GA 的 Python API,发现 G 家的 API 不是那么直观,比较绕,但是,在使用过程中发现其实 G 家的 API 设计挺有意思 ...

  4. python 操作 saltstack Api(二) 示例

    获取token #!/usr/bin/env python #-*-coding:utf--*- import urllib import urllib.parse import urllib.req ...

  5. Python 操作Zabbix API 获取ERROR级别告警信息并打印

    1.需求:有一个语音合成播报项目,要实时获取zabbix的ERROR级别以上告警信息,将该信息合成语音播报出去.(合成语音及播报已经完成) 2.现实:整理zabbix告警级别,将不太重要的告警放到ER ...

  6. Python 操作Sonqube API 获取检测结果并打印

    1.需求:每次Sonqube检查完毕后,需要登陆才能看到结果无法通过Jenkins发布后直接看到bug 及漏洞数量. 2.demo:发布后,可以将该项目的检测结果简单打印出来显示,后面还可以集成钉钉发 ...

  7. 通过Python操作hbase api

    # coding=utf-8 # Author: ruin """ discrible: """ from thrift.transport ...

  8. [技术博客]大闸蟹的技术博客,通过gitlab api进行用户批量创建

    技术博客--通过gitlab api批量注册用户 gitlab登录界面本身提供了register功能,但需要手工一个个添加,对于一次性会添加整个班级的学生的软工平台来说并不科学合理.使用gitlab ...

  9. Redis - Python操作Redis

    目录 Python操作Redis 一. Redis安装和基本使用 二. Python操作Redis API使用 1.操作模式 2.连接池 3.Django配置Redis 4.操作 Python操作Re ...

随机推荐

  1. LIGHTX-CMS —— 基于 Node.js,Express.js 以及 SQLite 3 搭建的个人博客系统

    概述 LIGHTX-CMS 是我基于 Node.js,Express.js 以及 SQLite 3 搭建的个人博客发布系统. 项目本身可以拿来部署个人博客网站,同时我认为其也适合用以新手学习 Node ...

  2. 百万年薪python之路 -- 模块二

    1. 序列化模块 什么是序列化呢? 序列化的本质就是将一种数据结构(如字典.列表)等转换成一个特殊的序列(字符串或者bytes)的过程就叫做序列化. 为什么要有序列化模块? 如果你写入文件中的字符串是 ...

  3. 后台添加Textbox

    /// <summary> /// behind add textbox /// </summary> private void AddTextToTextBox() { Te ...

  4. js中用面向对象的思想——淡入淡出轮播图

    首先看下效果图 明确功能 1.前后切换(边界判断) 2.按键切换  3.自动轮播 css代码 <style> * {margin:0; padding:0;} li{list-style: ...

  5. vue事件

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. zabbix清理监控历史mysql数据

    问题描述: 今天同事说有个zabbix监控数据库历史数据越来越多了, 让我帮忙清一下,顺便熟悉练练手,做个笔记 zabbix监控运行一段时间以后,会留下大量的历史监控数据 zabbix数据库一直在增大 ...

  7. R.Swift优雅加载资源文件

    在新的项目中,接触到了一个很不错的框架R.swift,可以帮助更方便安全的使用资源文件,相信已经使用过的或者还没有接触过的,一旦使用过了解过它,会爱上这个框架工具! 一.R.swift特点 当项目bu ...

  8. Python 加密 shellcode 免杀

    Python 加密 shellcode 免杀 环境准备:   Windows7 32 位系统: Shellcode 使用 kali linux Metasploit 生成 shellcode Wind ...

  9. for循环使用笔记

    1.for i in rang(1,101,2) #2为步长 print("loop",i) 2.flag 标志位3.for 循环CODE1 for与else一起用:当for循环正 ...

  10. 用js给元素增加链接

    <!DOCTYPE html><html>    <head>        <meta charset="UTF-8">      ...