python调用gitlab api自动合并分支_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()

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

python操作ansible api示例

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

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

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

Python 操作 GA API 指南

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

python 操作 saltstack Api(二) 示例

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

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

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

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

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

通过Python操作hbase api

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

Redis - Python操作Redis

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

Pthon操作Gitlab API----批量删除,创建,取消保护

1.需求:大批量的应用上线后合并到Master,其他的分支develop/test/uat等需要同步最新代码的操作. 2.操作:可以通过传参 ,列表 的方式把每个项目的id值填入,才能对相关项目进行批 ...

随机推荐

go sample - format

go sample - format package mainimport "fmt"import "os"type point struct { x, y i ...

Eclipse Java注释模板设置详解,更改 ${user}和${date}

修改MyEclipse eclipse 注释的作者名字 转自:http://www.oschina.net/question/158170_31311 在eclipse/myeclipse中,当我们去 ...

Linux常用命令总结--分布式应用部署与监控

1 kill所有相关进程ps -ef | grep -i 进程名 | grep -v "grep" | awk '{print $2}' |xargs kill 2 查询当前用户占 ...

ASP.NET菜鸟之路之登录系统

背景 我是一个ASP.NET菜鸟,暂时开始学习ASP.NET,在此记录下我个人敲的代码,没有多少参考价值,请看到的盆友们为我点个赞支持我一下,多谢了. 网站介绍 根据书上的例子做了一个比较粗糙的登录例 ...

python 当前时间获取方法

1.先导入库:import datetime 2.获取当前日期和时间:now_time = datetime.datetime.now() 3.格式化成我们想要的日期:strftime() 比如:“2 ...

docker利用Dockerfile来制作镜像

在前面的例子(docker tomcat镜像制作)中,我们从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低.所以就需要一 种文件或脚本,我 ...

第一个android ijkplayer播放器

创建一个ijkplayer的播放器项目,需要三步设置: 一.在activity_main.xml中添加播放器标签

setInterval() 方法应用

setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭.由 s ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值