api - 如何通过 curl 从谷歌云源存储库获取修订标签?
问题描述
我想要的是
- 我有一个 python 后端应用程序,使用服务帐户,在 docker 中运行。
- 我有一个连接到 bitbucket 存储库的云构建触发器。此触发器使用 webhook。对于修订,我使用标签。
- 我想用我的后端应用程序触发这个 webhook。我想提供一个特定的标签(使用占位符变量)。
- 我希望后端给我一个所有可用标签的列表(就像我在 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'
因为可以在云控制台中检索所有标签,所以我使用开发人员工具找到了为我提供所有可用标签的端点:
https://console.cloud.google.com/m/source/repos/get?project=<project>&repo=<repo>
我的问题是它需要 cookie 进行身份验证,如果我使用 Bearer 令牌它不起作用。
是否可以针对 console.google.com 自动验证我的服务帐户以使用此端点?还是有另一种获取标签列表的方法?
解决方案
根据您的解释,我了解到您的担忧是:
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
命令后获取标签列表。
推荐阅读
- postgresql - 在 Mac Os 中从本地机器到 PostgreSQL 容器的连接问题
- azure-data-explorer - Kusto 中的排名功能
- c - 注意是否所有线程都在 pthread_cond_wait
- laravel - 此集合实例上不存在属性 [用户]
- python-3.x - 将 DataFrame 附加到 {Key: Empty DataFrame (with columns)} 中的空 DataFrame
- python - 如何获取 google drive 目录的文件 id 列表,
- php - 模板渲染期间抛出异常(“路由“url”的参数“id”必须匹配“[^/]++”(“”给定)以生成相应的URL。”)
- python - 获取类型错误:输入数字的“str”和“int”实例之间不支持“>”
- python - 令牌的所有唯一排列
- python - 如何在 Python 2D 数组中执行 set() 函数?