google-cloud-build - 是否可以在 Google Cloud Build 中动态生成标签?

标签 google-cloud-build

首先:我对云构建有点陌生。与以前使用的方法相比,我发现它是一个令人痛苦、不成熟且相当烦人的框架。无休止的时间花在让构建器开始工作(例如, Helm 构建器)上,它的局限性令人惊讶和令人沮丧。也许下面的问题就是一个很好的例子:

我想构建并推送一个 docker 镜像。根据文档,最后要推送到 docker 存储库的图像(我为此使用 GCR)位于我的 cloudbuild.yaml 文件中的以下配置部分:

images:
  - 'eu.gcr.io/$PROJECT_ID/my-project:${_TAG}'
  - 'eu.gcr.io/$PROJECT_ID/my-project:latest'

我可以使用以下部分手动设置 _TAG 替换:
substitutions:
  _TAG: x.y.z

但这意味着我每次都必须手动修复此文件中的版本号。更糟糕的是:如果我分支出来,我需要一直维护版本号。在这种情况下,我有一个 python 项目,它使用 setuptools,版本自然包含在 setup.py 文件中,我可以毫无问题地解析它。尝试将数字解析为特定文件并在图像部分使用 $(cat VERSION) 失败,因为系统声称它无法替换 $(cat VERSION) 部分。那么如何在另一个构建步骤中覆盖 _TAG 变量,使其在“图像”部分中显示正确?

最佳答案

如果您使用来自 Cloud Source Repositories、GitHub 或 Bitbucket 的触发构建,您可以标记您的提交并使用 $TAG_NAME default substitution variable .

 images:
      - 'eu.gcr.io/$PROJECT_ID/my-project:$TAG_NAME'
      - 'eu.gcr.io/$PROJECT_ID/my-project:latest'

另一方面,如果您使用 Cloud SDK 提交 Cloud Build 构建,则可以使用 --substitutions argument 提供值。 :
gcloud builds submit [SOURCE] --config config.yaml --substitutions _TAG=x.y.z

另外我相信你会发现这个 GitOps-style continuous delivery with Cloud Build tutorial很有帮助。它介绍了如何使用 Cloud Build 在 Google Cloud Platform 上创建持续集成和交付 (CI/CD) 管道。

关于google-cloud-build - 是否可以在 Google Cloud Build 中动态生成标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60790781/

相关文章:

google-cloud-platform - 创建触发器时如何在云构建中添加替换变量?

google-app-engine - 如何将私有(private)的、自托管的 NPM 包与 Google App Engine 节点、标准环境一起使用

python - 在 GCP Cloud-Build 上构建 Django 项目

google-cloud-platform - 停止流式构建并开始流式构建在谷歌云构建中有何作用?

google-cloud-build - 在云构建配置文件中一起使用 `docker build` 和 `docker push` 与 `cloud build submit` 之间有什么实际区别?

google-app-engine - 如何在 2021 年增加 gcloud 应用程序部署超时

google-cloud-build - 为什么云建私池排队时间长

google-cloud-platform - 私有(private) VPC 网络上的 Google Cloud Build

github - 如何禁用对 Google Cloud Build 的 Github 检查

google-cloud-platform - 如何部署使用google cloud build和Source Repository新推送的多个云函数?