当前位置: 首页 > 知识库问答 >
问题:

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

蒯胜泫
2023-03-14

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

更新1:

我有一个构建触发器设置,我试图通过改变替换和回购分支来运行该触发器

更新2:

实际代码结果:

回溯(最后一次调用):文件“/layers/google.python.pip/pip/lib/python3.9/site packages/google/api_core/grpc_helpers.py”,第67行,错误为“重新映射”可调用返回可调用文件“/layers/google.python.pip/pip/lib/python3.9/site packages/grpc/_channel.py”,第946行,在调用返回文件“/layers/google.python.pip/pip/lib/python3.9/site packages/grpc/_channel.py”的第849行中,在调用结束响应阻塞(state,call,False,None)文件中,在grpc的第849行中_频道_不活动错误:

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
)

共有1个答案

熊俊人
2023-03-14

在使用Python的Cloud Build客户端库(google Cloud Build)时,我也面临同样的问题。然而,当直接调用REST API时,它确实可以正常工作,所以这个库似乎是原因之一。作为替代方案,您可以使用Google API Python客户端库(Google API Python客户端)实现同样的功能:

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()

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

 类似资料:
  • 我试图在Azure portal中开发一个Azure函数(node.js),它在创建文档时由Cosmos DB触发。Azure文档说,要做到这一点,首先我必须从模板中选择“Cosmos db触发器”,但没有模板出现在我的函数中...只出现HTTP an计时器触发器选项。我想使用CosmosDB和IoTHUB作为触发器,输入输出。有没有被忽略的要求?为什么我没有更多的触发器选项?需要指导。

  • 我正在尝试弄清楚如何确定是什么导致构建从脚本化Jenkinsfile中运行。原因是我在docker容器中有一个脚本,我想在cron作业中运行它,所以当cron作业触发时,我只希望它运行容器,但当我推送更改时,我希望它检查代码、重建容器、运行静态代码分析、运行测试等。在cron运行中不需要所有这些。 我如何能得到原因?我尝试了< code > current build . get causes()

  • 我应该做什么来运行CRON触发器现在运行一次,并遵循表达式,例如 每5分钟触发一次。 我看了下面的帖子 https://groups.google.com/forum/#!topic/quartznet/gav10e4tj50 如果要确保作业立即运行,可以将开始时间设置为datetime.now的前一天,因此可以将代码更改为: CronTrigger触发器=新的CronTrigger(“trig”

  • 我有一个子模块a,它不是一个独立的应用程序。它需要主应用程序才能工作。我想为创建一个CI构建,这样每当提交被推送到时,它就会触发一个具有主项目代码的构建。 我在詹金斯怎么做? 我需要做的是: 提交会触发生成 如何使用Jenkins和GIT做到这一点? 注意,我有多个子模块的项目。子模块A触发一个构建,该构建从A中提取最新的更改以及最新的主代码,并从其他子模块中提取更新。

  • 因此,我使用创建-反应-应用程序开发了一个小型 React 应用程序。(我总是从头开始制作应用程序。 然后,在我对它感到满意之后,我决定运行来制作优化的生产构建。 有人可以告诉我如何运行生产版本而不是开发版本吗?

  • 如何建立角度 在使用TypeScript编写Angular应用程序后,我们使用Angular CLI命令构建应用程序。 命令将应用程序编译到一个输出目录中,构建构件将存储在目录中。 这篇文章说Angular有两个编译器: > 视图编译器 模块编译器 > 当使用类(在main.ts中)进行引导时,Angular在中查找,找到它,实例化AppComponent的实例,并在标记中呈现它。 当用户在应用程