如何使用Python Gitlab API获取群组/子群组的全部项目及共享项目
实现方案
完全可以通过python-gitlab API实现该需求,你需要的共享项目可以通过群组的shared_projects接口直接拉取。
完整示例代码
import gitlab # 初始化gitlab连接,替换为你的实例地址和私人token gl = gitlab.Gitlab('https://你的gitlab实例地址', private_token='你的私人访问token') group = gl.groups.get(11111, lazy=True) # 1. 获取群组含子群组的所有自有项目 own_projects = group.projects.list(include_subgroups=True, all=True) print("=== 自有项目(含子群组) ===") for prj in own_projects: print(prj.attributes['name']) # 2. 获取群组的所有共享项目 shared_projects = group.shared_projects.list(all=True) print("\n=== 共享项目 ===") for prj in shared_projects: print(prj.attributes['name']) # 可选:合并两类项目并按ID去重 all_project_ids = set() all_projects = [] for prj in own_projects + shared_projects: if prj.id not in all_project_ids: all_project_ids.add(prj.id) all_projects.append(prj) print("\n=== 所有项目(自有+共享) ===") for prj in all_projects: print(prj.attributes['name'])
注意事项
- 你使用的私人访问token需要具备目标群组的读取权限,才能正常拉取共享项目列表
- 如果共享项目本身为私有项目,需要token同时具备该共享项目的访问权限,否则会出现无法读取属性的问题
内容的提问来源于stack exchange,提问作者Zozzoy
相关产品推荐
相关产品推荐

