【发布时间】:2021-09-23 19:35:49
【问题描述】:
在我的脚本化管道中,我有一个执行 helm 升级的 shell 脚本,我还设置了一些环境变量,如下所示:
sh """helm upgrade --install ${someVar} chart-hub/java-${javaVersion} \
...
--set env.vars[1] .name=some_name_here \
--set env.vars[1] .value="123abcdefhgj3457u" \
--set env.vars[2] .name=some_other_name_here \
--set env.vars[2] .value="true"
...
在我添加 --set env.vars[2] .name=some_other_name_here \ 和之前,一切都运行良好
--set env.vars[2] .value="true" 到我的管道脚本。我收到错误...ReadString: expects " or n but found t, error found in #10 byte of ...|, "value":true}], ...
我尝试将值括起来:'true'、"'true'",甚至将true 存储在变量中,然后将变量分配给 --set env.vars[2] .value="${myVar} " 但错误仍然存在。
知道我做错了什么,或者我可以尝试的解决方案吗?提前致谢
【问题讨论】:
-
这听起来像是在解释器之间从 Groovy 到 shell 到 Golang 的类型转换正在将字符串重新转换为布尔值。我会严重怀疑 shell 解释器正在重铸类型。您可以使用
writeYaml方法写入值,并将该文件作为值的参数提供给helm upgrade。你的环境可以吗? -
值得一提。我很机智,哈哈,但如果有另一种方法可以将值存储在单独的文件中,我也会对此持开放态度。非常感谢。
-
该文件只存在于作业工作区中,因此它只是一个替代接口和管道代码。
-
谢谢。你介意把它写出来作为答案吗?
标签: kubernetes jenkins-pipeline kubernetes-helm jenkins-groovy jenkins-job-dsl