python - 如何获取 GitLab 组(python-gitlab)中所有存储库的项目 ID?
问题描述
我想在我的协作 GitLab 组中的所有存储库中自动化一些流程,这(至少从 GitLab API v4 开始)需要项目 ID 而不是名称。
该python-gitlab
库是否具有获取给定组的所有项目 ID 的方法?
解决方案
原来确实有这样的方法!
我编写了一个脚本,它将获取所有项目的列表并提取它们的 ID:
#### get_project_ids.py ####
# gets all project ids for a gitlab group
# assumes GitLab 'private_token' is set to env. variable called $GITLAB_TOKEN
import gitlab, os
# authenticate
gl = gitlab.Gitlab('https://gitlab.com/', private_token=os.environ['GITLAB_TOKEN'])
# set gitlab group id
group_id = 55555
group = gl.groups.get(group_id, lazy=True)
#get all projects
projects = group.projects.list(include_subgroups=True, all=True)
#get all project ids
project_ids = []
for project in projects:
project_ids.append((project.path_with_namespace, project.id))
print(project_ids)
如果您随后需要对这些存储库进行操作,您可以使用该requests
库通过 python 进行 http 调用,例如:
import requests
# unprotect master branch for all projects
for pid in project_ids:
r = requests.request('DELETE', 'https://gitlab.com/api/v4/projects/{}/protected_branches/master'.format(pid[1]), headers = {'PRIVATE-TOKEN' : token})
推荐阅读
- python - “while”循环过早退出(python 3)
- mysql - MySQL子查询作为别名 - 未知列错误
- c# - AutoMapper 不映射嵌套的复杂类型
- ffmpeg - 使用 ffmpeg 将 DTS 转换为 AAC 将语音音频向右移动
- path - 路径问题 - POSIX HFS 无法获取文件夹
- java - Firebase 数据库分页滚动动作
- bash - Bash - 如果主域在文件 A(或管道)中,则从文件 B 中删除域/子域
- android - 将可见性设置为 GONE 不会隐藏 imageView
- c# - glBufferData 不断失败并显示 GL_INVALID_ENUM 即使它不应该
- mongodb - 在 MongoDB 中插入大数据