【发布时间】:2020-03-11 19:14:05
【问题描述】:
如何查询 GitHub Packages 以确定包是否已存在?如果该包已经存在,我想阻止 CI/CD 尝试发布 Maven 包。
我正在尝试如下查询:
curl -X POST -H "Authorization: bearer <some token>" -H "Accept: application/vnd.github.packages-preview+json" -d <my query> https://api.github.com/graphql
<my query> 的样子:
query {
organization(login: "myorg") {
registryPackagesForQuery(packageType: MAVEN, first: 100) {
edges {
node {
name
id
}
}
}
}
}
我的包裹被退回:
{
"data": {
"organization": {
"registryPackagesForQuery": {
"edges": [
{
"node": {
"name": "com.example.myorg",
"id": "<some id>"
}
}
]
}
}
}
}
但是,registryPackagesForQuery 有一个 query 参数(String 类型),但我不知道该查询格式应该是什么样子。任何添加值的尝试似乎都不会返回任何数据。
查询的正确格式是什么?如果我想检查某个包的特定版本是否存在,该查询有何不同?
基本查询文档在这里:https://developer.github.com/v4/query/。
组织:https://developer.github.com/v4/object/organization/
RegistryPackageConnection:https://developer.github.com/v4/object/registrypackageconnection
注册表包:https://developer.github.com/v4/object/registrypackage/
【问题讨论】:
-
你找到答案了吗?寻找完全相同的
-
是的,特定包是否存在的实际测试归结为对与该包关联的 POM 文件的 HEAD 调用。我将它构建到我无法共享的 Gradle 插件中(还),但调用的是 maven.pkg.github.com,后跟“/ORG/REPO/GROUP_DELIMITED_WITH_SLASHES/ARTIFACT_ID/VERSION/ARTIFACT_ID-VERSION.pom”(需要拆分URL 作为 SO 自动格式化它,它会破坏呈现)。
标签: github graphql github-graphql github-package-registry