我正在尝试检索特定版本Django的发行信息。但是,发行版始终返回空响应。在下面的示例中,我尝试检索有关Django's 1.11 release的信息:
import os
import requests
GITHUB_ACCESS_TOKEN = os.environ['GITHUB_ACCESS_TOKEN']
def get_release_information():
query = '''
{
repository(owner: "django", name: "django") {
release(tagName: "1.11") {
name
tagName
createdAt
}
}
}
'''
response = requests.post(
url='https://api.github.com/graphql',
json={'query': query},
headers={'Authorization': f'token {GITHUB_ACCESS_TOKEN}'}
)
pprint(response.json())
以上返回:
{
"data": {
"repository": {
"release": null
}
}
}
我误解了如何执行GraphQL查询吗?我可以使用以下针对this release的查询来使这个查询在我自己的个人公共存储库上工作:
query = '''
{
repository(owner: "michaeljohnbarr", name: "django-timezone-utils") {
release(tagName: "0.13") {
name
tagName
createdAt
}
}
}
'''
我的个人存储库返回以下结果:
{
"data": {
"repository": {
"release": {
"name": "Version 0.13",
"tagName": "0.13",
"createdAt": "2018-09-26T00:01:20Z"
}
}
}
}
我认为Github API v4 GraphQL库对2个公共存储库的处理方式不同。我正在使用的我的Github访问令牌对所有内容都具有完全权限;我已经检查了所有可能的权限和子权限。
更新:(2019-09-14) Github的GraphQL API有一个支持论坛。我发现this thread可以识别相同的问题,并且也已发布在那里。
答案 0 :(得分:0)
将gihub GraphQL Explorer与
一起使用query {
repository(owner: "django", name: "django") {
releases {
totalCount
}
}
}
回答:
{
"data": {
"repository": {
"releases": {
"totalCount": 0
}
}
}
}
查询没有返回发布号,就像其他一些存储库一样。
使用REST API https://api.github.com/repos/django/django/releases也会产生空结果。
答案 1 :(得分:0)
https://stackoverflow.com/a/35062729/2693385是此问题的实际答案。这也带我到了forum post in Github。
问题在于,当作者创建标签时,它会创建一个“发布点”(版本UI中的临时占位符),而不是发布。为了使其成为发行版,作者必须通过UI或API在发行版中添加注释。
与StackOverflow答案相关,每个标签创建一个发布点,但实际上并未创建一个发布。当您将发行说明添加到标签时,就会创建发行本身。但是,正如您所指出的,没有与之关联的发行版的标签仍会显示在“发行版”选项卡上,尽管风格迥然不同。我知道这怎么会造成混乱。
我已将您的功能请求记录在我们的内部功能请求列表中。尽管我不能保证任何事情或为此共享时间表,但我可以告诉您,已经与适当的团队共享了它以供考虑。