Jenkinsfile:将变量添加到shell命令时出错

e4yzc0pl  于 2023-08-03  发布在  Jenkins
关注(0)|答案(1)|浏览(142)

我的这段代码失败了

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的数据

lndjwyie

lndjwyie1#

groovy_parameters变量的末尾有一个额外的换行符。“此换行符拆分命令,以便sh步骤认为groovy_parameters之后的参数是一个新的单独命令。控制台输出中看不到单独的命令,因为Jenkins默认情况下在sh步骤中使用-xe shell标志,因此在第一个失败的命令出现时停止执行命令。
\添加到多行字符串的最后一行,或在最后一个新行字符之前结束多行字符串:

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'"""

字符串

相关问题