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. STM32 MDK摘记

    题记:这人是越懒越懒,记性也也来越差,前段时间改了个链接文件,今天想用,竟然忘了咋写....还是勤记记吧... 随时更新,笔记帖. 不喜勿喷! 1,关于MDK链接文件宏的定义 #! armcc -E ...

  2. 2019.12.12 Java的多线程&匿名类

    Java基础(深入了解概念为主) 匿名类 定义 Java匿名类很像局部或内联系,只是没有明细.我们可以利用匿名类,同时定义并实例化一个类.只有局部类仅被使用一次时才应该这么做. 匿名类不能有显式定义的 ...

  3. Vmware问题: 开机提示“虚拟机已被打开,是否获得所有权?”& Vmware检测不到USB

    "一只美丽的小鸟,在绿色的草坪上蹦来跳去,很是可爱"----清风徐来 问题1: Vmware开机提示"虚拟机已被打开,是否获得所有权?" 解决: 关闭虚拟机,用 ...

  4. 人工智能对人类有哪些影响 选择Python入门怎样

    人工智能对人类有哪些影响?选择Python入门怎样?人工智能是科技时代进步的产物,也是目前人们非常关注的一个产业.那么,随着人工智能的发展,对人类生活的有哪些影响呢? 1.人工智能对文化产业影响 据了 ...

  5. Swing的基本操作

    package GUI_experience; import java.awt.*; import java.awt.Container; import java.awt.FlowLayout; im ...

  6. linux学习之路(三)--centos7安装mysql(单点)

    1.先检查系统是否装有mysql rpm -qa | grep mysql 返回空值,说明没有安装. 这里执行安装命令是无效的,因为centos-7默认是Mariadb,所以执行以下命令只是更新Mar ...

  7. SringMVC笔记

    SpringMvc主要是三个Servlet:HttpServletBean,FramwworkServlet,DispatcherServlet,它们是依次继承的关系,其处理过程大致功能如下: 1.H ...

  8. Go 终端读写 && 文件读写、copy

    终端读写 操作终端相关文件句柄常量 os.Stdin(standard):标准输入 os.Stdout:标准输出 os.Stderr:标准错误输出 标准输出 demo:直接输出和 判断之后输出的结果不 ...

  9. div实现圆环进度条

    <!DOCTYPE html> <html> <head> <meta charset="{CHARSET}"> <title ...

  10. STM8 LED

    时钟分频寄存器(CLK_CKDIVR) 举例 int main() { CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //高速内部时钟1分频 GPIO_ ...