如何将Jenkins环境变量传入Helm Chart的deployment.yml配置
问题根因
报错核心是两个配置错误:
- Helm
--set传参的字段路径不匹配:你定义的镜像tag存放在values.yaml的image.tag嵌套路径下,但传参时写的是根层级的image_tag,参数根本没有注入到正确的字段位置,%image_tag%是你手动写的无效占位符,Helm不会自动识别Windows批处理的%变量名%格式做替换,最终原样输出到镜像引用字段触发格式错误。 - 同阶段的
kubectl create deployment命令镜像地址配置错误,直接用构建号作为镜像名,无法拉取你推送到DockerHub的目标镜像。
修正方案
1. 调整values.yaml配置
删除无效的%image_tag%占位,不需要提前写占位符,留空即可:
image: repository: photop/micro_focus pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. tag: ""
你的deployment.yaml模板逻辑本身是正确的,无需修改,会自动读取.Values.image.tag的值渲染镜像地址。
2. 修正Jenkinsfile阶段配置
把Helm传参的字段路径改成和Values结构匹配的image.tag,同时修正kubectl命令的镜像地址:
stage ('Deploy&Operate HM'){ steps{ script{ bat 'minikube start' bat 'kubectl create deployment %BUILD_NUMBER% --image="photop/micro_focus:%BUILD_NUMBER%"' bat 'helm install test-%BUILD_NUMBER% ./micro --set image.tag=%BUILD_NUMBER%' } } }
补充说明:如果你后续切换到Linux节点执行Jenkins任务,批处理变量格式要从
%BUILD_NUMBER%改成$BUILD_NUMBER,当前Windows bat节点保持原有变量格式即可。
内容的提问来源于stack exchange,提问作者Lior Swisa
相关产品推荐
相关产品推荐

