Github API v4 GraphQL不返回tagName发布

时间:2019-09-14 17:17:40

标签: graphql github-api github-api-v4

我正在尝试检索特定版本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可以识别相同的问题,并且也已发布在那里。

2 个答案:

答案 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在发行版中添加注释。

forum post in Github说:

  

与StackOverflow答案相关,每个标签创建一个发布点,但实际上并未创建一个发布。当您将发行说明添加到标签时,就会创建发行本身。但是,正如您所指出的,没有与之关联的发行版的标签仍会显示在“发行版”选项卡上,尽管风格迥然不同。我知道这怎么会造成混乱。

     

我已将您的功能请求记录在我们的内部功能请求列表中。尽管我不能保证任何事情或为此共享时间表,但我可以告诉您,已经与适当的团队共享了它以供考虑。