1.需求:大批量的应用上线后合并到Master,其他的分支develop/test/uat等需要同步最新代码的操作。

2.操作:可以通过传参 ,列表 的方式把每个项目的id值填入,才能对相关项目进行批量操作。

3.代码:

  1. # -*- coding: utf-8 -*-
  2. __Author__ = "jmmei"
  3. __Date__ = '2019/9/22'
  4.  
  5. """
  6. 删除wjj_test develop 后,从master分支再创建的需求
  7. pip3 install python-gitlab
  8. """
  9. import gitlab
  10. import os
  11. import sys
  12.  
  13. class GitlabAPI():
  14. def __init__(self,url,token,projectid):
  15. self.gl = gitlab.Gitlab(url,token)
  16. self.project=self.gl.projects.get(projectid)
  17.  
  18. def get_all_projects(self):
  19. result_list= self.gl.projects.list(all=True,as_list=False)
  20.  
  21. return result_list
  22.  
  23. def get_all_branches(self):
  24. #branches = self.project.branches.list() #默认是第一页的分支列表
  25. branches = self.project.branches.list(all=True)
  26. branches_list=[]
  27. for i in branches:
  28. branches_list.append(i.name)
  29.  
  30. return branches_list
  31.  
  32. def del_branches(self,branch):
  33. self.project.branches.delete(branch)
  34.  
  35. def create_branches(self,branch):
  36. branch_obj = self.project.branches.create({'branch': branch,'ref': 'master'})
  37.  
  38. # 分支保护取消
  39. #branch1.protect()
  40. branch_obj.unprotect()
  41.  
  42. if __name__ == '__main__':
  43. url = 'http://www.baidu.com"
  44. token = = 'xxxxxxxx'
  45. last_list=["develop","wjj_test","wjj_uat","wjj_uat_match"]
  46.  
  47. #通过输入参数获取第一个参数,仅限Linux环境中使用
  48. #proid = sys.argv[1]
  49. #通过列表,windows环境批处理
  50. proid_list=["",""]
  51. sum=0
  52.  
  53. for proid in proid_list:
  54. py_git=GitlabAPI(url,token,proid)
  55. return_list=py_git.get_all_branches()
  56. for branch in last_list:
  57. if branch not in return_list:
  58. py_git.create_branches(branch)
  59. print("创建%s分支成功."%branch)
  60. else:
  61. py_git.del_branches(branch)
  62. py_git.create_branches(branch)
  63. print("创建%s分支成功."%branch)
  64. sum+=1
  65. print("projectid:%s从Master拉取创建成功,第%s次------->>>>>>>>"%(proid,sum))
  66.  
  67. '''
  68. all_projects=py_git.get_all_projects()
  69. print(获取所有项目的name id)
  70. for p in all_projects:
  71. print(p.name, p.id)
  72. '''
  73.  
  74. #py_git=GitlabAPI(url,token,x)
  75. #判断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. Ajax的基本使用流程

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. mac install azure-cli

    安装 CLI 时,可以先更新 brew 存储库信息,然后运行 install 命令: brew update && brew install azure-cli 更新: brew up ...

  3. Java 发送http GET/POST请求

    最近项目里面需要用到Java发送http请求,由于发送https请求有点复杂,暂时不考虑 HttpURLConnection HttpURLConnection是一种多用途.轻量极的HTTP客户端,使 ...

  4. QT 设置程序图标

    1.应用窗口左上角的图标.状态栏上显示的图标用setWindowIcon()函数: 2.可执行程序的图标设置: (1).右键项目添加一个资源文件 (2).导入.ico文件图标

  5. C/C++中内存泄漏、内存溢出与野指针的解释与说明

    1.内存泄漏 内存泄漏是指我们在堆中申请(new/malloc)了一块内存,但是没有去手动的释放(delete/free)内存,导致指针已经消失,而指针指向的东西还在,已经不能控制这块内存, 所以就是 ...

  6. Java基础IO类之打印流

    package IODemo; import java.io.*; /* 打印流 : 很方便的进行输出 字节打印流 增强输出功能 字符打印流 */ public class PrintStreamDe ...

  7. React Hooks中父组件中调用子组件方法

    React Hooks中父组件中调用子组件方法 使用到的hooks-- useImperativeHandle,useRef /* child子组件 */ // https://reactjs.org ...

  8. hdu 1075 map的使用 字符串截取的常用手段 以及string getline 使用起来的注意事项

    首先说字符串的截取套路吧 用坐标一个一个的输入 用遍历的方式逐个去检查字符串中的字符是否为符合的情况 如果是的话 把该字符放入截取string 中 让后坐标前移 如果不是的话 截取结束 坐标初始化 然 ...

  9. collections.defaultdict()的使用

    这里的defaultdict(function_factory)构建的是一个类似dictionary的对象,其中keys的值,自行确定赋值,但是values的类型,是function_factory的 ...

  10. C#笔试题目总结

    基础 知识点 try catch finally的执行顺序(有return的情况下): 不管有没有出现异常,finally块中代码都会执行: 当try和catch中有return时,finally仍然 ...