问题标签 [cloudbuild.yaml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
181 浏览

dockerfile - 如果 CloudBuild 失败,则在 Cloud Build 中使用 2 个 Dockerfile 来重新使用中间步骤映像

Cloud Build 因超时错误而失败(我正在尝试使用 Prophet 部署 CloudRun)。因此,我试图将 Dockerfile 一分为二(将图像保存在两者之间,以防万一失败)。我会像这样拆分 Dockerfile:

  • Dockerfile_one:python + 先知的依赖
  • Dockerfile_two:image_from_Dockerfile_one + 先知 + 其他依赖

cloudbuild.yaml 应该是什么样子:

  1. 如果有以前可用的图像跳过该步骤,否则使用 Dockerfile_one 运行该步骤并保存图像
  2. 使用步骤 (1) 中的映像,向其添加更多依赖项并保存映像以进行部署

这是 cloudbuild.yaml 现在的样子

非常感谢!

0 投票
1 回答
117 浏览

python - 在 Google Cloud Build 中使用 python 插件编译 protobuf 消息

我已经处理这个问题好几个星期了,急需帮助!因此,提前感谢您对如何将 protobufs 编译为 pb2.py 文件的任何见解,以便在 Google Cloud Build 期间您的工作区的其余部分可以访问它们。

迄今为止的尝试:

  1. 我首先尝试使用 google-cloud-builders, protoc image。我能够成功地将图像推送到构建器项目注册表,但我不确定我是否能够正确安装 python 插件。

    这是我的 cloud_build.yaml 步骤:

    我不断收到错误阅读: failed: starting step container failed: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "protoc": executable file not found in $PATH: unknown

  2. 接下来,我尝试使用可安装 pip 的 grpcio-tools python 包来编译原型。这更加成功,因为我实际上能够生成 pb2.py文件。不过,我的兴奋是短暂的。在云构建期间,我调用了一个测试文件,该文件导入了一个 pb2.py 文件,我们将其命名为 A。现在,当 A 导入另一个 pb2.py 文件时,我得到一个模块未找到错误,我'将称为 B。我已经打印出云构建环境中的目录结构,并且 A 和 B 都存在,并且 A 肯定可以访问 B(它们存在于同一个包中)。

这是目录结构:

模块导入错误可能与 protobuf 文件的编译完全无关,只是云构建环境的一个属性。不过,我确实注意到,如果我在存储库中预编译触发云构建的 protobuf 文件,则一切正常。或者,如果我在我的 PC 上遵循相同的过程,一切正常。我只是不明白文件如何存在但不可导入。

0 投票
0 回答
254 浏览

git - 从 Google Cloud Build 访问 Github 存储库

我有 Cloud Build Trigger,它在推送到我的 GitHub 存储库的给定分支时运行。

在我的 cloudbuild.yaml 文件中,我试图访问我的私人 GitHub 存储库之一。那是行不通的。这是失败的步骤:

云构建的错误是:

当我更改 git 命令时,错误也会更改。

不同的命令:

新错误:

在这里查看一些文档,它说如果构建是通过触发器开始的,您应该能够访问私有存储库。这似乎不是这里的情况。

在我开始配置 SSH 密钥之前,我想知道是否有人以这种方式成功访问了他们的私有 GitHub 存储库。

注意:这个问题与这个问题几乎相同,但该页面上的答案不相关。

0 投票
2 回答
161 浏览

google-cloud-platform - 为什么云构建说我缺少我的项目所需的“compute.instances.create”权限?

我正在尝试使用“使用容器创建”方法,但出现以下错误:

错误:(gcloud.compute.instances.create-with-container)无法获取资源:步骤#2:-'projects/local_test_prod1283/zones/us-central1-a/instances/所需的'compute.instances.create'权限实例应用训练'

我检查了项目 local_test_prod1283确实有作用compute.instanceAdmin.v1

我的云构建 yaml 如下:

我在这里想念什么?

0 投票
2 回答
57 浏览

google-app-engine - 如何使用云构建将应用部署指定在另一个文件夹中?

我的应用程序位于名为 的文件夹中client,如何创建一个触发器来指定要在该文件夹上执行的应用程序部署工作流?

我的 cloudbuild.yaml 文件也在该文件夹中,并且具有以下内容:

错误是这样的:

我的文件目录:

  • 主要的
    • .gitignore
    • 执照
    • 自述文件.md
    • 客户
      • 应用程序.yaml
      • cloudbuild.yaml
0 投票
1 回答
28 浏览

google-cloud-platform - 云构建触发器不应基于 git commit 消息创建 docker 映像

如果用户使用提交消息“skip-docker-creation”提交代码,那么云构建管道不应该创建 docker 映像,我们如何在管道中实现这一点?

0 投票
2 回答
163 浏览

spring-boot - Google Cloud Build 中的 Spring Boot 应用程序出错 - 创建工作版本但报告构建失败

我有一个以前构建良好的 Java Spring Boot 应用程序,但我们现在遇到了问题。

我们正在使用 GCP,当我们推送到 GCP 中的某些分支时,云构建功能会自动触发构建。目标是让应用程序自行构建,然后部署到应用程序引擎。在多次试验和错误之前的各种迭代中,我们成功地做到了这一点。

该应用程序已成功构建和部署。这意味着如果我推送代码,它就会构建并工作。但是云构建工具不断报告构建失败。

我们的 cloudbuild.yaml

这里是一个 app.yaml 供参考

第一步完成得很好,或者看起来是这样。

该应用程序在该特定版本上可用并且运行良好。

这是我们当前面临的“失败”,在第二步失败构建的输出中找到:

我们在构建缓存方面一直存在相当一致的问题,以至于过去我们推送新代码并启动旧版本的代码。我想这可能都是相关的。

我们已尝试清除应用程序特定版本的整个容器注册表缓存,这就是该特定问题开始发生的时间。我有一种感觉,它只是构建和启动应用程序的一个版本,然后返回并尝试在此之上启动应用程序的不同版本。寻找一种至少获得更详细日志记录的方法,但这主要是我卡住的地方。

如何调整“名称:'gcr.io/cloud-builders/gcloud'”步骤以正确指示部署有效?这是正确的方法吗?

0 投票
0 回答
32 浏览

docker - 为什么 Google Cloud Build 会执行我的所有触发器

我正在使用 Google Cloud Build 作为 CI 来构建 docker 映像。每个微服务都有一个存储库和多个子目录(带有 Dockerfile 和 cloudbuild.yaml 文件)。我为每个只监视特定子目录(包含文件过滤器)的微服务设置了触发器。对于缓存 docker 层,我使用的是 Kaniko。我的 cloudbuild 步骤如下所示:

一切正常,但是当我在一个微服务中进行修改时,它会构建所有微服务。你知道为什么吗?谢谢你。

0 投票
1 回答
84 浏览

tags - GCP Cloud Build 标签发布

我有一个 GCP 云构建 yaml 文件,它在 Github 中的新标签上触发。

我已将最新标签配置为在应用程序引擎版本上显示,但我需要配置 cloudbuild.yml 文件以将我的标签上的句号替换为连字符,否则它在部署阶段会失败。

尝试使用--version=${TAG_NAME//./-},但在部署阶段出错。

0 投票
1 回答
196 浏览

google-cloud-platform - 如何将自定义 Cloud Builders 与来自 Google Artifact Repository 的图像一起使用

如何在 Cloud Build 中使用自定义构建器映像,该映像存储在 Artifact Registry(而不是 Container Registry)的存储库中?

我在 Cloud Build 中设置了一个管道,其中一些 python 代码使用官方 python 图像执行。因为我想缓存我的 python 依赖项,所以我想创建一个自定义 Cloud Builder,如官方文档中所示

GCP 明确表示要切换到 Artifact Registry,因为 Container Registry 将被前者取代。因此,我已将我的 docker 镜像推送到 Artifact Registry。我还向我的 Cloud Builder 服务帐户授予了 Artifact Registry 的读取权限。

在这样的 Cloud Build 步骤中使用图像

引发以下错误

步骤#0 - “install_dependencies”:拉取镜像:europe-west3-docker.pkg.dev/xxxx/yyyy:latest 步骤#0 - “install_dependencies”:来自守护进程的错误响应:europe-west3-docker.pkg.dev 的清单/xxxx/yyyy:latest not found: manifest unknown: 未找到请求的实体。

“xxxx”是存储库名称,“yyyy”是我的图像的名称。标签“最新”存在。我可以在本地提取图像并访问存储库。

我找不到任何关于如何从 Artifact Registry 集成这些图像的文档。只有这个官方指南,其中镜像是使用 Container Registry 中的 Docker 镜像构建的——但这不应该是未来的证明。