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

GitHub Action中GraphQL无法获取组织私有包的问题求助

解决GitHub Action中GraphQL无法获取组织私有包的问题

问题分析

你的GitHub Action原本正常运行一年半,近期突然因GraphQL查询返回空包列表失效,核心是当前查询无法正确获取组织下的私有包数据,导致后续删除、发布流程中断。

排查与解决步骤

1. 确认Token权限是否达标

GitHub权限模型可能有更新,确保Action中使用的GITHUB_TOKEN或自定义token具备以下权限:

  • packages:read:读取私有包信息
  • packages:delete:删除包版本
  • 若为组织级token,需在组织设置中允许该token访问私有包资源

2. 给GraphQL查询添加packageType参数

GitHub GraphQL API的packages字段现在需要明确指定包类型(默认可能不包含私有包),根据你的包类型修改查询:

query {
  organization(login: "#{ENV['INPUT_ORGANISATION-NAME']}") {
      packages(
        names: ["#{ENV['INPUT_PACKAGE-NAME']}"], 
        first: 100,
        packageType: NPM  # 替换为你的包类型,比如MAVEN、DOCKER等
      ){
        nodes{
          versions(last:100){
            nodes{
              id
              version
            }
          }
        }
      }
  }
}

3. 验证环境变量准确性

检查Action中传递的INPUT_ORGANISATION-NAME和INPUT_PACKAGE-NAME:

  • 组织登录名(login)需与GitHub上完全一致(注意大小写敏感)
  • 包名若为scoped包,需包含完整前缀(如@your-org/package-name)

4. 手动在GraphQL Explorer测试

用相同token和参数在GitHub GraphQL Explorer执行查询:

  • 若仍返回空,说明是权限或API参数问题
  • 若能返回数据,说明是Action环境中变量传递或token配置的问题

5. 检查包的归属与可见性

  • 确认目标包未被转移到其他账户,仍归属当前组织
  • 检查包的可见性设置,确保为「私有」或「内部」(内部包需token所属账户有组织访问权限)

恢复删除流程示例

当查询正常返回包版本ID后,用以下mutation删除指定版本(0.1.0.qa):

mutation DeletePackageVersion($versionId: ID!) {
  deletePackageVersion(input: {packageVersionId: $versionId}) {
    success
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:40:24