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对数据库进行事务处理),在开始之前先来看下面这样的一个页面图: 上面这张图片显示的是从数据库中查询出的出租信息,信息中进行了分页处理,然后每行的前面提 ...
随机推荐
- Ajax的基本使用流程
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- mac install azure-cli
安装 CLI 时,可以先更新 brew 存储库信息,然后运行 install 命令: brew update && brew install azure-cli 更新: brew up ...
- Java 发送http GET/POST请求
最近项目里面需要用到Java发送http请求,由于发送https请求有点复杂,暂时不考虑 HttpURLConnection HttpURLConnection是一种多用途.轻量极的HTTP客户端,使 ...
- QT 设置程序图标
1.应用窗口左上角的图标.状态栏上显示的图标用setWindowIcon()函数: 2.可执行程序的图标设置: (1).右键项目添加一个资源文件 (2).导入.ico文件图标
- C/C++中内存泄漏、内存溢出与野指针的解释与说明
1.内存泄漏 内存泄漏是指我们在堆中申请(new/malloc)了一块内存,但是没有去手动的释放(delete/free)内存,导致指针已经消失,而指针指向的东西还在,已经不能控制这块内存, 所以就是 ...
- Java基础IO类之打印流
package IODemo; import java.io.*; /* 打印流 : 很方便的进行输出 字节打印流 增强输出功能 字符打印流 */ public class PrintStreamDe ...
- React Hooks中父组件中调用子组件方法
React Hooks中父组件中调用子组件方法 使用到的hooks-- useImperativeHandle,useRef /* child子组件 */ // https://reactjs.org ...
- hdu 1075 map的使用 字符串截取的常用手段 以及string getline 使用起来的注意事项
首先说字符串的截取套路吧 用坐标一个一个的输入 用遍历的方式逐个去检查字符串中的字符是否为符合的情况 如果是的话 把该字符放入截取string 中 让后坐标前移 如果不是的话 截取结束 坐标初始化 然 ...
- collections.defaultdict()的使用
这里的defaultdict(function_factory)构建的是一个类似dictionary的对象,其中keys的值,自行确定赋值,但是values的类型,是function_factory的 ...
- C#笔试题目总结
基础 知识点 try catch finally的执行顺序(有return的情况下): 不管有没有出现异常,finally块中代码都会执行: 当try和catch中有return时,finally仍然 ...