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

如何获取GitHub仓库最新活跃部署?GraphQL查询优化求助

如何用GitHub GraphQL筛选状态为ACTIVE的部署

要筛选出状态为ACTIVE的部署,GitHub GraphQL的repository.deployments字段本身不支持直接按state过滤,但可以通过Search查询实现精准筛选,无需在后端聚合结果。

方案一:使用Search查询直接过滤

直接利用GitHub的Search GraphQL接口,通过查询字符串指定部署状态、仓库和环境,直接获取符合要求的结果:

query ($repo_owner: String!, $repo_name: String!, $environment: String!) {
  search(
    query: "repo:${repo_owner}/${repo_name} type:deployment state:active environment:${environment}",
    type: DEPLOYMENT,
    first: 10,
    orderBy: {field: CREATED_AT, direction: DESC}
  ) {
    nodes {
      ... on Deployment {
        state
        ref {
          name
        }
        createdAt
      }
    }
  }
}

查询参数说明:

  • repo:${repo_owner}/${repo_name}:限定查询的目标仓库
  • type:deployment:指定查询类型为部署记录
  • state:active:筛选状态为ACTIVE的部署
  • environment:${environment}:限定目标部署环境

原查询无法直接过滤的原因

GitHub GraphQL的Repository.deployments字段的可用参数中,没有提供按state过滤的选项,只能返回指定环境下的所有部署,无法在查询阶段完成状态筛选。因此Search接口是最直接的替代方案。

备选方案(不推荐)

如果一定要沿用原有的repository.deployments查询结构,只能在获取结果后手动过滤state为ACTIVE的节点,但这需要在客户端或后端处理数据,不符合你不想聚合结果的需求,因此不推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:59:53