Pthon操作Gitlab API----批量删除,创建,取消保护
1.需求:大批量的应用上线后合并到Master,其他的分支develop/test/uat等需要同步最新代码的操作。
2.操作:可以通过传参 ,列表 的方式把每个项目的id值填入,才能对相关项目进行批量操作。
3.代码:
# -*- coding: utf-8 -*-
__Author__ = "jmmei"
__Date__ = '2019/9/22' """
删除wjj_test develop 后,从master分支再创建的需求
pip3 install python-gitlab
"""
import gitlab
import os
import sys class GitlabAPI():
def __init__(self,url,token,projectid):
self.gl = gitlab.Gitlab(url,token)
self.project=self.gl.projects.get(projectid) def get_all_projects(self):
result_list= self.gl.projects.list(all=True,as_list=False) return result_list def get_all_branches(self):
#branches = self.project.branches.list() #默认是第一页的分支列表
branches = self.project.branches.list(all=True)
branches_list=[]
for i in branches:
branches_list.append(i.name) return branches_list def del_branches(self,branch):
self.project.branches.delete(branch) def create_branches(self,branch):
branch_obj = self.project.branches.create({'branch': branch,'ref': 'master'}) # 分支保护取消
#branch1.protect()
branch_obj.unprotect() if __name__ == '__main__':
url = 'http://www.baidu.com"
token = = 'xxxxxxxx'
last_list=["develop","wjj_test","wjj_uat","wjj_uat_match"] #通过输入参数获取第一个参数,仅限Linux环境中使用
#proid = sys.argv[1]
#通过列表,windows环境批处理
proid_list=["",""]
sum=0 for proid in proid_list:
py_git=GitlabAPI(url,token,proid)
return_list=py_git.get_all_branches()
for branch in last_list:
if branch not in return_list:
py_git.create_branches(branch)
print("创建%s分支成功."%branch)
else:
py_git.del_branches(branch)
py_git.create_branches(branch)
print("创建%s分支成功."%branch)
sum+=1
print("projectid:%s从Master拉取创建成功,第%s次------->>>>>>>>"%(proid,sum)) '''
all_projects=py_git.get_all_projects()
print(获取所有项目的name 和id)
for p in all_projects:
print(p.name, p.id)
''' #py_git=GitlabAPI(url,token,x)
#判断last_list是否在return_list中,删除和创建分支
注意:另外还有python操作gitlab aip的其他操作,请参考官方文档。
Pthon操作Gitlab API----批量删除,创建,取消保护的更多相关文章
- gitlab中批量删除本地以及远程tag的操作
git 批量删除标签# 删除所有远程标签git show-ref --tag | awk '{print ":" $2}' | xargs git push origin # 删除 ...
- php 用封装类的方法操作数据库和批量删除
封装类 <?php class DBDA { public $host="localhost"; //服务器地址 public $uid="root"; ...
- [技术博客]大闸蟹的技术博客,通过gitlab api进行用户批量创建
技术博客--通过gitlab api批量注册用户 gitlab登录界面本身提供了register功能,但需要手工一个个添加,对于一次性会添加整个班级的学生的软工平台来说并不科学合理.使用gitlab ...
- 使用python脚本批量删除阿里云oss中的mp4文件
#encoding:utf-8 ''' oss中有一些mp4文件需要删除,首先定位出这些文件放在txt文本中 然后通过python操作oss进行批量删除 ''' import oss2 auth = ...
- confirm对话框取消后阻止ajax操作、ajax做批量删除
在做批量删除的时候,需要用confirm弹出一个提示框让用户确认是否删除,点击确定,执行操作,点击取消,取消操作.但是如果使用ajax把选中项的主键值传到处理页面处理时,如果使用下面的方法将confi ...
- iOS开发——UI进阶篇(四)tableView的全局刷新,局部刷新,左滑操作,左滑出现更多按钮,进入编辑模式,批量删除,自定义批量删除
首先创建项目,在storyboard如下布局控件,设置好约束 然后创建cell模型类XMGWineCell数据模型类XMGWine创建UITableView,设置数据源协议,实现数据源方法懒加载数据这 ...
- oracle事务处理及实例演示jdbc操作批量删除
事务 作为逻辑处理的基本单位,对于数据库操作来说由一条或者多条sql语句来构成.当然还有针对非数据库操作的,如在计算机中设置的还原点即是一个非常好的应用. 对于事务的基本性质在还有一篇中有所叙述:SQ ...
- 使用Ajax实现的批量删除操作(C#)
今天做了一个简单的批量删除操作,虽然简单,但是很多问题出现,终究还是技术不够熟练. 现在在这里跟大家分享一下.仅供学习... 1.在前台获取用户点击的信息id,把这里id封装到一个数组里面:(rows ...
- mySql事务_ _Java中怎样实现批量删除操作(Java对数据库进行事务处理)?
本文是记录Java中实现批量删除操作(Java对数据库进行事务处理),在开始之前先来看下面这样的一个页面图: 上面这张图片显示的是从数据库中查询出的出租信息,信息中进行了分页处理,然后每行的前面提 ...
随机推荐
- [NPM错误]npm ERR! Unexpected end of JSON input while parsing near ‘’
[错误描述] npm ERR! Unexpected end of JSON input while parsing near ‘ ’ [前提描述] 在安装vue2-editor时,中断暂停了,再次 ...
- rsync同步本地和服务器之间的文件
同步本地文件到服务器 rsync -zvrtopg --progress --delete test -e 'ssh -p 6665' yueyao@172.16.0.99:/media/sdb/us ...
- 使用redis调用lua脚本的方式对接口进行限流
java端实现: //初始化一个redis可执行的lua DefaultRedisScript<List> defaultRedisScript = new DefaultRedisScr ...
- 长乐培训Day6
T1 数列 题目 [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [数据规模] 如上所述. 解析 身为T1,居然比T4还难......让我怎么办......以下为巨佬题解: 我猜 ...
- Python-05-字符串格式化
一.百分号方式 %[(name)][flags][width].[precision]typecode (name) 可选,用于选择指定的key flags 可选,可供选择 ...
- 从零开始学Flask框架-004
Flask-Moment pip install flask-moment 除了moment.js,Flask-Moment 还依赖jquery.js.但是Bootstrap 已经引入了jquery. ...
- 『Python基础』第6节:流程控制之while循环
在生活中经常遇到循环的事情, 比如循环列表播放歌曲等. 在Python中, 也有循环, 就是其流程控制语句while. 1. 基本循环 while 条件: 循环体 # 如果条件为真, 那么就执行循环体 ...
- 『Python基础』第5节:条件控制
if 语句的使用 单分支 if 条件: 满足条件后要执行的代码 例如: if 2 < 3: print(222) print(333) 每个条件后面都要使用冒号 :, 表示接下来是满足条件后要执 ...
- ES6语法基本使用
什么是ES6? ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.Mozilla公司将在这个标准的基础上,推出JavaScript 2. ...
- vue 写一个炫酷的轮播图
效果如上图: 原理: 1.利用css 的 transform 和一些其他的属性,先选五张将图片位置拍列好,剩余的隐藏 2.利用 js 动态切换类名,达到切换效果 css代码如下 .swiper-cer ...