首页 > 解决方案 > 如何通过 curl 从谷歌云源存储库获取修订标签?

问题描述

我想要的是

  1. 我有一个 python 后端应用程序,使用服务帐户,在 docker 中运行。
  2. 我有一个连接到 bitbucket 存储库的云构建触发器。此触发器使用 webhook。对于修订,我使用标签。
  3. 我想用我的后端应用程序触发这个 webhook。我想提供一个特定的标签(使用占位符变量)。
  4. 我希望后端给我一个所有可用标签的列表(就像我在 console.google.com 前端一样,看截图)

构建触发器中的修订标签

我试过的

我使用 Bearer 令牌(工作正常)尝试了这个 API 端点,但它没有为我提供标签列表:Source Repo API

curl https://sourcerepo.googleapis.com/v1/projects/<project>/repos/<repo>' --header "Authorization: Bearer $(gcloud auth print-access-token)" --header 'Accept: application/json'

因为可以在云控制台中检索所有标签,所以我使用开发人员工具找到了为我提供所有可用标签的端点:

console.google.com 端点

https://console.cloud.google.com/m/source/repos/get?project=<project>&repo=<repo>

我的问题是它需要 cookie 进行身份验证,如果我使用 Bearer 令牌它不起作用。

是否可以针对 console.google.com 自动验证我的服务帐户以使用此端点?还是有另一种获取标签列表的方法?

标签: apiauthenticationgoogle-cloud-platformtagsgoogle-cloud-source-repos

解决方案


根据您的解释,我了解到您的担忧是:

1. 如果有一种方法可以从您的存储库中获取标签列表,您可以使用您找到的端点在 GCP 控制台中看到该列表。

控制台显示的有关标签的信息并非来自任何 REST 或 gRPC API(Google 提供的 API),而是直接来自 git API。控制台前端运行类似于git tag从存储库中获取标签的命令。标签不存储在 GCP 系统中,控制台仅在 git 存储库中查询标签。

2. 我可以在控制台上使用服务帐户进行身份验证吗?

不可以。Web 前端使用的 API(即以 开头的 API https://console.cloud.google.com)将只允许 cookie 身份验证,只有用户帐户才能获得。通常有一种方法可以将前端 API ( https://console.cloud.google.com) 转换为 GCP API ( https://*.googleapis.com),您可以在其中使用常规身份验证来检索信息。但是,在这种情况下,标签信息不在 GCP API 中(而是在 git repo 中),因此没有可用的翻译。

3. 如果有另一种方法来列出存储库中可能存在的标签?

我试图重现您的情况,以找到一种方法来获取一个存储库中存在的标签列表,在本例中为 Bitbucket 存储库,我发现您将能够使用该$ git tag命令获取此数据。在本文档中,您将能够找到与存储库标签相关的所有命令。知道了这一点,在将 Bitbucket 存储库链接到我的代码后,我能够在使用该$ git tag命令后获取标签列表。


推荐阅读