OpenShift BuildConfig Docker 策略 spec.output.to.name 使用环境变量进行标记
OpenShift BuildConfig Docker strategy spec.output.to.name using environment variable for tagging
我定义了以下 OpenShift BuildConfig:
<snip>
output:
to:
kind: DockerImage
name: myregistry.com/myapp:${TAG}
strategy:
type: Docker
dockerStrategy:
from:
kind: ImageStreamTag
name: nodejs-12:latest
namespace: myproject
env:
- name: TAG
value: latest
我希望 TAG 是一个版本号,它由来自应用程序 package.json
的版本和 Jenkins #build
号组成。所以我计划使用 -e
选项在 OpenShift start-build
命令行中传递这个 env 值。但是,在应用 BuildConfig 定义时,它会抱怨 name is not a valid Docker pull specification: invalid reference format
。如何使用变量指定图像标签字符串值?感谢任何建议和见解。
遗憾的是,使用单个 BuildConfig
是不可能的。 output
部分在对象创建期间进行评估,您的构建容器环境稍后无法设置该标签。
您可能想改用 Template
,为您需要构建的搜索标签创建 BuildConfigs
。
或者,假设 OpenShift 4+,您可以查看 Tekton
。 Pipeline
对象允许通用构建定义 - 尽管仍然需要为每个图像标签创建 PipelineResources
,以及 git 源引用。
我定义了以下 OpenShift BuildConfig:
<snip>
output:
to:
kind: DockerImage
name: myregistry.com/myapp:${TAG}
strategy:
type: Docker
dockerStrategy:
from:
kind: ImageStreamTag
name: nodejs-12:latest
namespace: myproject
env:
- name: TAG
value: latest
我希望 TAG 是一个版本号,它由来自应用程序 package.json
的版本和 Jenkins #build
号组成。所以我计划使用 -e
选项在 OpenShift start-build
命令行中传递这个 env 值。但是,在应用 BuildConfig 定义时,它会抱怨 name is not a valid Docker pull specification: invalid reference format
。如何使用变量指定图像标签字符串值?感谢任何建议和见解。
遗憾的是,使用单个 BuildConfig
是不可能的。 output
部分在对象创建期间进行评估,您的构建容器环境稍后无法设置该标签。
您可能想改用 Template
,为您需要构建的搜索标签创建 BuildConfigs
。
或者,假设 OpenShift 4+,您可以查看 Tekton
。 Pipeline
对象允许通用构建定义 - 尽管仍然需要为每个图像标签创建 PipelineResources
,以及 git 源引用。