You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GraphQL获取GitLab中的共享项目?

GitLab GraphQL 查询组内所有项目(含共享项目)方案

GitLab GraphQL 的 group.projects 字段默认仅返回组内直接项目及子组项目,无法直接获取共享到该组的项目。要实现与 REST 接口 GET /api/v4/groups/{groupId}/projects(默认启用with_shared)等效的功能,需要同时查询 sharedProjects 字段来获取共享项目,再将两类结果合并。

完整查询示例

query {
  group(fullPath: "{groupPath}") {
    requireTwoFactorAuthentication
    # 获取组内及子组的项目
    projects(includeSubgroups: true, first: 100) {
      nodes {
        id
        name
        fullPath
      }
      pageInfo {
        endCursor
        hasNextPage
      }
    }
    # 获取共享到当前组的项目
    sharedProjects(first: 100) {
      nodes {
        id
        name
        fullPath
      }
      pageInfo {
        endCursor
        hasNextPage
      }
    }
  }
}

关键说明

  • projects(includeSubgroups: true):获取当前组及其所有子组下的直接项目,对应 REST 接口中include_subgroups=true的逻辑。
  • sharedProjects:专门获取被共享到当前组的外部项目,这部分就是 REST 接口中with_shared=true返回的共享项目。
  • 分页处理:如果项目数量超过100,需要利用pageInfo中的endCursor和hasNextPage进行分页查询,后续请求中通过after: "{endCursor}"参数获取下一页数据。
  • 结果合并:在客户端需要将projects.nodes和sharedProjects.nodes两个数组合并,可根据id字段去重(避免极端情况下的重复条目)。

内容的提问来源于stack exchange,提问作者Art

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 13:50:49