1

我正在尝试检索特定版本的 Django 的发布信息。但是,发布总是返回一个空响应。在下面的示例中,我试图检索Django 的 1.11 版本的信息:

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 查询?我可以使用以下针对此版本的查询在我自己的个人公共存储库上使用相同的查询:

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 有一个支持论坛。我发现这个线程确定了相同的问题并且也在那里发布。

4

1 回答 1

0

https://stackoverflow.com/a/35062729/2693385是这个问题的实际答案。它还把我带到了Github 上的论坛帖子

问题在于,当作者创建标签时,它会创建一个“发布点”(UI 中用于发布的临时占位符),而不是发布。为了让它成为一个版本,作者必须通过 UI 或 API 向版本添加注释。

Github 上的论坛帖子说:

正如 StackOverflow 的答案所涉及的那样,每个标签都会创建一个发布点,但实际上并没有创建一个发布。当您将发布说明添加到标签时,会创建发布本身。但是,正如您所指出的,没有与之关联的发布的标签仍然会显示在发布选项卡上,尽管样式非常不同。我可以看到这可能会令人困惑。

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

于 2019-09-14T18:57:18.467 回答