Github 标签列表和发布资产 url
Github list of tag and release asset urls
我正在努力使用 github graphql 接口来获取我需要的数据。我想获取标签和版本的资产 URL 列表。似乎有些回购协议产生了我想要的结果,而另一些则什么也没产生。
query {
repository(owner:"erlang",name:"otp") {
releases(last:100) {
edges {
node {
url
releaseAssets(last:100) {
edges {
node {
downloadUrl
}
}
}
tag {
name
target {
... on Commit {
zipballUrl
tarballUrl
}
}
}
}
}
}
tags:refs(refPrefix:"refs/tags/", last:30) {
edges {
tag:node {
name
target {
sha:oid
commitResourcePath
... on Commit {
zipballUrl
tarballUrl
author {
name
email
date
}
}
}
}
}
}
}
}
该查询按原样生成我想要的结果(或至少其中一些),而 owner:"spring-projects",name:"spring-framework" 生成没有 tarball 的标签。当我查看 spring-framework repo 时,它显然有发布资产。
为什么他们没有显示在此查询中?当我查看 git 每个版本和标签都有资产时,即使在我的查询中,结果也是命中或未命中。我错过了什么?
目标是一个 git reference, in that case it can point to a Tag
or a Commit
对象。当它指向 Commit
时,您的查询 returns 因为 ...on Commit
不是空的。要获得 Tag
以及尝试使用 ...on Tag
并根据您的需要提取标记器或它指向的提交。这是一个例子:
{
repository(owner: "spring-projects", name: "spring-framework") {
releases(last: 100) {
edges {
node {
url
releaseAssets(last: 100) {
edges {
node {
downloadUrl
}
}
}
tag {
...refInfo
}
}
}
}
tags: refs(refPrefix: "refs/tags/", last: 30) {
edges {
node {
...refInfo
}
}
}
}
}
fragment refInfo on Ref {
name
target {
sha: oid
commitResourcePath
__typename
... on Tag {
target {
... on Commit {
...commitInfo
}
}
tagger {
name
email
date
}
}
... on Commit {
...commitInfo
}
}
}
fragment commitInfo on Commit {
zipballUrl
tarballUrl
author {
name
email
date
}
}
请注意,在上面的示例中,我使用 fragments 来减少查询大小并提高可读性
我的猜测是,如果 ref 指向一个 Tag
对象,那是一个 annotated tag which can hold a message, a specific tagging date & tagger info. If it points to a Commit
object, it's a lightweight tag 对象,它只是链接到一个提交
我正在努力使用 github graphql 接口来获取我需要的数据。我想获取标签和版本的资产 URL 列表。似乎有些回购协议产生了我想要的结果,而另一些则什么也没产生。
query {
repository(owner:"erlang",name:"otp") {
releases(last:100) {
edges {
node {
url
releaseAssets(last:100) {
edges {
node {
downloadUrl
}
}
}
tag {
name
target {
... on Commit {
zipballUrl
tarballUrl
}
}
}
}
}
}
tags:refs(refPrefix:"refs/tags/", last:30) {
edges {
tag:node {
name
target {
sha:oid
commitResourcePath
... on Commit {
zipballUrl
tarballUrl
author {
name
email
date
}
}
}
}
}
}
}
}
该查询按原样生成我想要的结果(或至少其中一些),而 owner:"spring-projects",name:"spring-framework" 生成没有 tarball 的标签。当我查看 spring-framework repo 时,它显然有发布资产。
为什么他们没有显示在此查询中?当我查看 git 每个版本和标签都有资产时,即使在我的查询中,结果也是命中或未命中。我错过了什么?
目标是一个 git reference, in that case it can point to a Tag
or a Commit
对象。当它指向 Commit
时,您的查询 returns 因为 ...on Commit
不是空的。要获得 Tag
以及尝试使用 ...on Tag
并根据您的需要提取标记器或它指向的提交。这是一个例子:
{
repository(owner: "spring-projects", name: "spring-framework") {
releases(last: 100) {
edges {
node {
url
releaseAssets(last: 100) {
edges {
node {
downloadUrl
}
}
}
tag {
...refInfo
}
}
}
}
tags: refs(refPrefix: "refs/tags/", last: 30) {
edges {
node {
...refInfo
}
}
}
}
}
fragment refInfo on Ref {
name
target {
sha: oid
commitResourcePath
__typename
... on Tag {
target {
... on Commit {
...commitInfo
}
}
tagger {
name
email
date
}
}
... on Commit {
...commitInfo
}
}
}
fragment commitInfo on Commit {
zipballUrl
tarballUrl
author {
name
email
date
}
}
请注意,在上面的示例中,我使用 fragments 来减少查询大小并提高可读性
我的猜测是,如果 ref 指向一个 Tag
对象,那是一个 annotated tag which can hold a message, a specific tagging date & tagger info. If it points to a Commit
object, it's a lightweight tag 对象,它只是链接到一个提交