我的这段代码失败了
groovy_parameters ="""${params.is_destroy == true ? ' -destroy': ''} \
-var 'client=${params.client}' \
-var 'region=$region' \
-var 'cluster=${params.cluster}' \
-var 'vpc_name=${params.vpc}' \
-var 'app_name=$app_name' \
-var 'consul_url=${env.CONSUL_URL}' \
-var 'kv_path=$consul_path'
"""
sh "${terraformBinaryName} import ${groovy_parameters} module.resources.aws_s3_bucket.antivirus_bucket[\"definitions\"] < bucket_name >"
字符串
Jenkins执行:
terraform1-29 import -var client=***-var region=ap-southeast-2 -var cluster=***-var vpc_name=***-var app_name=***-var consul_url=***-var kv_path=***
因此,它将所有groovy_params
变量添加到shell命令中,但没有添加后面的部分。
这就是为什么我得到这个terraform导入错误:
import命令需要两个参数。
任何帮助解决这个问题将不胜感激!
编辑:添加Jenkins的屏幕截图:x1c 0d1x的数据
1条答案
按热度按时间lndjwyie1#
在
groovy_parameters
变量的末尾有一个额外的换行符。“此换行符拆分命令,以便sh
步骤认为groovy_parameters
之后的参数是一个新的单独命令。控制台输出中看不到单独的命令,因为Jenkins默认情况下在sh
步骤中使用-xe
shell标志,因此在第一个失败的命令出现时停止执行命令。将
\
添加到多行字符串的最后一行,或在最后一个新行字符之前结束多行字符串:字符串