【发布时间】:2020-07-02 13:43:11
【问题描述】:
首先:我对云构建有点陌生。与以前使用的方法相比,我发现它是一个痛苦、不成熟且相当烦人的框架。无休止的时间花在让构建者开始工作,据说是开箱即用的(例如 helm builder),它的局限性令人惊讶和沮丧。也许下面的问题就是一个很好的例子:
我想构建和推送一个 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 变量,使其在“图像”部分中显示正确?
【问题讨论】: