python - 如何使用 python-cloudbuild 运行构建触发器

标签 python google-cloud-platform google-api-python-client google-cloud-build google-cloud-python

如何使用 python-cloudbuild 库来运行构建触发器并从 SourceRepo 正确传递数据?

更新1:

我设置了一个构建触发器,我正在尝试通过更改替换和存储库分支来运行该触发器

更新2:

实际代码结果:

回溯(最近一次调用最后一次):文件“/layers/google.python.pip/pip/lib/python3.9/site-packages/google/api_core/grpc_helpers.py”,第 67 行,在 error_remapped_callable 返回 callable_ (*args, **kwargs) 文件“/layers/google.python.pip/pip/lib/python3.9/site-packages/grpc/_channel.py”,第 946 行,调用 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 的 RPC 终止于: 状态 = StatusCode.INTERNAL

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 的 Cloud Build 客户端库 (google-cloud-build) 时,我遇到了同样的问题。但是,当直接调用 REST API 时,它确实可以正常工作,因此库似乎是造成这种情况的原因。作为替代方案,您可以使用 Google API Python 客户端库 (google-api-python-client) 实现相同的目的:

from googleapiclient.discovery import build

project_id = "my-project-id"
trigger_id = "00000000-1111-2222-aaaa-bbbbccccdddd"

with build("cloudbuild", "v1") as cloudbuild:
  run_build_trigger = cloudbuild.projects().triggers().run(
    projectId = project_id,
    triggerId = trigger_id,
    body = {
      "branchName": "dev",
      "substitutions": {
        "_TEST": "FOO"
      }
    }
  )

  run_build_trigger.execute()

确保所有替换均已在现有触发器上声明。

关于python - 如何使用 python-cloudbuild 运行构建触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68393561/

相关文章:

python - 删除 Numpy 数组中的 NaN 和 Infs

database - 从 google appengine datastore 迁移到 google cloud bigtable 的最佳方式是什么?

python - 使用服务帐户安全地创建 Google 日历邀请

Python MyQLdb execute 不接受参数

python - Django + Rest 框架 + twilio : Getitng status call back sid

python - 如何修复 RuntimeError "Expected object of scalar type Float but got scalar type Double for argument"?

kubernetes - 如何保护 Google Kubernetes Engine (GKE) 中的只读端口 10255?

google-cloud-platform - GCP - 如何添加有关发送到发布订阅死信队列的消息数量的警报?

python - 如何在 python 中向 Gmail-API 发送批量请求?

authentication - 为什么 Google Cloud Translate 上的持久 503 服务不可用?