使用python-gitlab包在gitlab上自动创建分组
项目需求:在公司内部搭建的gitlab服务器上,需要在补丁包service-pack分组内,根据补丁包所支持的版本号,再建立一级子分组,然后在版本号的路径下面,存放对应版本的补丁包项目.
格式形如:
--普通补丁包
--6.0.0
--对应的补丁包项目
官方文档:https://python-gitlab.readthedocs.io/en/stable/index.html
gitlab官方文档:https://docs.gitlab.com/ee/api/groups.html
准备工作:
1、先要去gitlab服务器上面生成自己的token。具体操作步骤:点击个人中心的settings--->左侧边栏的访问令牌--->添加个人访问令牌--->设置名称,过期时间之后点击创建个人访问令牌即可。
2、在个人开发的服务器上面配置gitlab账号,具体步骤百度即可。
主要用到的文档部分:
Groups部分:https://python-gitlab.readthedocs.io/en/stable/gl_objects/groups.html
Projects部分:https://python-gitlab.readthedocs.io/en/stable/gl_objects/projects.html
# coding:utf-8 # 模块名字叫python-gitlab,在这里导包的时候是 gitlab import gitlab gl = gitlab.Gitlab(gitlab服务器地址, private_token=前面设置的个人访问令牌) # 默认all=False,单页显示20条数据, # 设置为all=True后显示所有 groups = gl.groups.list(all=True) # 获取指定分组 # 分组ID在 gitlab中的设置-->常规-->GroupID 获取 group = gl.groups.get(分组ID) # 获取当前分组的所有子分组 all_groups = group.subgroups.list(all=True) # 获取所有子分组的名字 sub_group_names = [i.name for i in all_groups] # 如果知道了分组的ID,可以直接获取该分组对象,不必从gitlab服务器的根路径下开始进行操作.例如: def create_version_group(version_str): """根据补丁支持的版本号在git上面创建对应的group""" gl = gitlab.Gitlab(GIT_URL, private_token=PRIVATE_TOKEN) service_pack_group = gl.groups.get(COMMON_PACK_GROUP_ID) # 获取当前 补丁包组 下面所有的子组 all_groups = service_pack_group.subgroups.list(all=True) group_names = [i.name for i in all_groups] if version_str not in group_names: data = { "name": version_str, "path": version_str, "parent_id": COMMON_PACK_GROUP_ID } target_group = gl.groups.create(data) print("git上面创建对应的版本分组成功!") return target_group else: return # 这里要注意创建分组的时候.data参数中需要指定name,path,parent_id(就是上一级分组的ID)三个参数.在之前的调试过程中,因为没有指定parent_id,程序一直抛出401权限认证失败的异常. # 当前分组下的所有项目 all_projects = target_group.projects.list(all=True) pkg_names = [i.name for i in all_projects] # 删除指定分组 gl.groups.delete(group_id) # 删除指定项目 gl.projects.delete(pkg_id)