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
相关产品推荐
相关产品推荐

