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对数据库进行事务处理),在开始之前先来看下面这样的一个页面图: 上面这张图片显示的是从数据库中查询出的出租信息,信息中进行了分页处理,然后每行的前面提 ...
随机推荐
- linux编程 新建一个进程的方法
学习到一种,直接调用系统函数,在类的构造函数中直接启动一个线程,例如,某个类是用来监听串口的,可以直接在其构造函数中调用系统函数,开辟一个进程,在该进程对应的函数中不断while(1){....} h ...
- LeetCode 242. 有效的字母异位词(Valid Anagram)
242. 有效的字母异位词 LeetCode242. Valid Anagram 题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s ...
- vector 使用pair对
pair是一种序偶结构<x,y> 如果我们希望使用pair但又不需要map对其排序,可以在vector中使用pair对 插入pair对使用make_pair<typename,typ ...
- 【leecode】 Course Schedule
class Solution { public: static bool canFinish(int numCourses, vector<pair<int, int>>&am ...
- SAS学习笔记54 RTF文件格式
Style RTF Control Word Example Code Italicize \i title '\i italicized title'; Underline \ul title '\ ...
- Consul 注册中心介绍
在 Spring Cloud 体系中,几乎每个角色都会有两个以上的产品提供选择,比如在注册中心有:Eureka.Consul.zookeeper.etcd 等:网关的产品有 Zuul.Spring C ...
- layer.open自定义弹出位置
fixed:false,设置top才有效,待测试. 这个设置不起作用 var img = "<img src=\"/_temp/qrcodenet/m/book/book20 ...
- element 右键菜单
右键菜单 这是一个右键菜单的组件 <template> <div id="dropMenu" :style="style" style=&qu ...
- galera集群
一.环境准备 1.各主机配置静态域名解析: cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhos ...
- 【转】SpringCloud学习笔记(一)——基础
什么是微服务架构 简单地说,微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful API进 ...