【发布时间】:2021-08-24 21:30:32
【问题描述】:
我想在我的协作 GitLab 组中的所有存储库中自动化一些流程,这(至少从 GitLab API v4 开始)需要项目 ID 而不是名称。
python-gitlab 库是否具有获取给定组的所有项目 ID 的方法?
【问题讨论】:
我想在我的协作 GitLab 组中的所有存储库中自动化一些流程,这(至少从 GitLab API v4 开始)需要项目 ID 而不是名称。
python-gitlab 库是否具有获取给定组的所有项目 ID 的方法?
【问题讨论】:
原来确实有这样的方法!
我写了一个script,它将获取所有项目的列表并提取它们的 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})
【讨论】: