【发布时间】:2021-09-24 08:19:29
【问题描述】:
如何使用 python-cloudbuild 库运行构建触发器并正确传递来自 SourceRepo 的数据?
更新 1:
我设置了一个构建触发器,我正在尝试通过更改替换和 repo 分支来运行该触发器
更新 2:
实际代码结果:
Traceback(最近一次调用最后一次):文件“/layers/google.python.pip/pip/lib/python3.9/site-packages/google/api_core/grpc_helpers.py”,第 67 行,在 error_remapped_callable return callable_ (*args, **kwargs) 文件“/layers/google.python.pip/pip/lib/python3.9/site-packages/grpc/_channel.py”,第 946 行,在 call 中return _end_unary_response_blocking(state, call, False, None) 文件“/layers/google.python.pip/pip/lib/python3.9/site-packages/grpc/_channel.py”,第 849 行,在 _end_unary_response_blocking raise _InactiveRpcError(state ) grpc._channel._InactiveRpcError: <_inactiverpcerror of rpc status="StatusCode.INTERNAL</p">
credentials, project_id = google.auth.default()
client = cloudbuild_v1.services.cloud_build.CloudBuildClient()
trigger_id = '2f1erbc4-asdf-1234-qwery-c4bc74d16d62'
repo_source = cloudbuild_v1.RepoSource()
repo_source.branch_name = 'develop'
repo_source.substitutions = {
"_ENVIRONMENT":"dev",
"NAMESPACE":"dev"
}
operation = client.run_build_trigger(
project_id=project_id,
trigger_id=trigger_id,
source=repo_source
)
【问题讨论】:
-
嗨达米安,只是为了确认你在这里想要实现的目标。您已经创建了一个构建触发器,现在想从 python 脚本运行它?我之所以问是因为——除非配置为手动——构建触发器通常会根据源仓库上发生的 git 事件(推送/拉取请求/标签)精确创建以自动执行,而无需运行任何东西。
-
是的,我设置了构建触发器,我正在尝试通过更改替换和 repo 分支来运行该触发器。
-
我在直接与 Cloud Build API 交互时遇到了类似的错误——尤其是与 projects.triggers 端点交互时。可能值得在 IssueTracker 上打开一个问题
-
实际上,我设法直接使用 API 使其工作,我被另一个问题阻止,即“branchName”字段似乎不接受正则表达式(请参阅Trigger Run REST API not accepting regex branchName in payload)。但是,我仍然面临与您使用 google-cloud-build python 库相同的问题。请参阅我的答案,了解使用 google-api-python-client 的替代实现。
标签: python google-cloud-platform google-api-python-client google-cloud-build google-cloud-python