在詹金斯管道中将参数从for循环传递到多行sh

时间:2018-09-25 03:30:49

标签: jenkins groovy sh jenkins-pipeline

我有一个时髦的詹金斯管道步骤,我想将循环值作为参数传递给循环中的多行sh脚本。但是参数没有被传递。

或者在詹金斯阶段是否有更好的方法来添加步骤?

for (int i = 0; i < elements.size(); i++) {

    sh '''
       cd terraform/
       terraform init
       terraform workspace select ${elements[i]}-${envtype}
       terraform plan -var-file="./configs/${elements[i]}/var.tf"
    '''
}

2 个答案:

答案 0 :(得分:6)

似乎您应该使用"""而不是''''''是引号Stringdoesn't support内插的三元组

答案 1 :(得分:2)

您需要一个triple double quoted string。您正在使用triple single quoted string。 Groovy中的任何单引号字符串都不具有字符串插值功能,因此'''${i}'''打印${i},而"""${i}"""打印3(如果i = 3)。