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----批量删除,创建,取消保护的更多相关文章

  1. gitlab中批量删除本地以及远程tag的操作

    git 批量删除标签# 删除所有远程标签git show-ref --tag | awk '{print ":" $2}' | xargs git push origin # 删除 ...

  2. php 用封装类的方法操作数据库和批量删除

    封装类 <?php class DBDA { public $host="localhost"; //服务器地址 public $uid="root"; ...

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

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

  4. 使用python脚本批量删除阿里云oss中的mp4文件

    #encoding:utf-8 ''' oss中有一些mp4文件需要删除,首先定位出这些文件放在txt文本中 然后通过python操作oss进行批量删除 ''' import oss2 auth = ...

  5. confirm对话框取消后阻止ajax操作、ajax做批量删除

    在做批量删除的时候,需要用confirm弹出一个提示框让用户确认是否删除,点击确定,执行操作,点击取消,取消操作.但是如果使用ajax把选中项的主键值传到处理页面处理时,如果使用下面的方法将confi ...

  6. iOS开发——UI进阶篇(四)tableView的全局刷新,局部刷新,左滑操作,左滑出现更多按钮,进入编辑模式,批量删除,自定义批量删除

    首先创建项目,在storyboard如下布局控件,设置好约束 然后创建cell模型类XMGWineCell数据模型类XMGWine创建UITableView,设置数据源协议,实现数据源方法懒加载数据这 ...

  7. oracle事务处理及实例演示jdbc操作批量删除

    事务 作为逻辑处理的基本单位,对于数据库操作来说由一条或者多条sql语句来构成.当然还有针对非数据库操作的,如在计算机中设置的还原点即是一个非常好的应用. 对于事务的基本性质在还有一篇中有所叙述:SQ ...

  8. 使用Ajax实现的批量删除操作(C#)

    今天做了一个简单的批量删除操作,虽然简单,但是很多问题出现,终究还是技术不够熟练. 现在在这里跟大家分享一下.仅供学习... 1.在前台获取用户点击的信息id,把这里id封装到一个数组里面:(rows ...

  9. mySql事务_ _Java中怎样实现批量删除操作(Java对数据库进行事务处理)?

      本文是记录Java中实现批量删除操作(Java对数据库进行事务处理),在开始之前先来看下面这样的一个页面图: 上面这张图片显示的是从数据库中查询出的出租信息,信息中进行了分页处理,然后每行的前面提 ...

随机推荐

  1. php有关类和对象的相关知识1

    有关类和对象的相关知识 类的自动加载 类的自动加载是指,在外面的页面中,并不需要去“引入”(包含)类文件,但是程序会在需要一个类的时候就自动去“动态加载”该类. 什么叫做“需要一个类”?通常是这样的情 ...

  2. ROS中的通信机制

    http://www.ros.org/core-components/ Communications Infrastructure At the lowest level, ROS offers a ...

  3. matlab中执行mex文件时提示GLIBCXX not found

    解决方案参考: http://stackoverflow.com/questions/8421708/glibcxx-not-found-when-compiling-vtk-example-unde ...

  4. [#] - .Net平台的实时性能监控

    App Metricshttps://www.app-metrics.io ASP.NET Core之跨平台的实时性能监控http://www.cnblogs.com/GuZhenYin/p/7170 ...

  5. java实现屏幕截屏功能

    最近在项目中遇到这样一个需求,用户生成推广海报想要发送给朋友,但是推广海报是用html网页写的,这时候想要分享给朋友的话只能用户自己手机截图,显然这样的用户体验是不友好的,如果可以给用户一个按钮实现一 ...

  6. Android中使用LitePal操控SQLite数据库

    <第一行代码>读书手札 (一)什么是LitePal数据库 LitePal数据库是安卓的一个开源库,我们在以后的开发中,将会遇到许许多多的开源库,感谢开源社 区:因为开源社区的存在,一些我们 ...

  7. PAT(B) 1049 数列的片段和(C)规律

    题目链接:1049 数列的片段和 (20 point(s)) 题目描述 给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段.例如,给定数列 { 0.1, 0.2, 0.3, 0.4 },我 ...

  8. WUSTOJ 1339: 土豪fcbruce(Java)

    题目链接:1339: 土豪fcbruce Description 10年后,就职于Google的fcbruce赞助了武汉科技大学好多钱,学校因此决定扩建.第一步是新建宿舍楼,为了整洁美观,fcbruc ...

  9. java连接腾讯云上的redis

    目录 腾讯云上的配置 redis连接单机和集群 依赖 pom.xml redis参数的配置文件 遗留问题 腾讯云上的配置 在安全组上打开相关的端口即可 "来源" 就是你的目标服务器 ...

  10. NIO-FileChannel源码分析

    目录 NIO-FileChannel源码分析 目录 前言 RandomAccessFile 接口 创建实例 获取文件通道 FileChannelImpl 创建 写文件 读文件 修改起始位置 获取文件长 ...