我想在我的协作的GitLab组中的所有存储库中自动化一些流程,这(至少从GitLab API v4开始)需要项目I而不是名称。
python-gitlab库有没有一种方法可以抓取给定组的所有项目ID?
发布于 2021-06-08 03:40:11
事实证明,确实存在这样的方法!
我已经编写了一个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})https://stackoverflow.com/questions/67877691
复制相似问题