JobDSL 中的多行 powershell 命令

Multiple line powershell command in JobDSL

我正在修改 JobDSL,但似乎无法找到一种方法来一次性 运行 多个 powershell 命令。示例:

job('whatever'){
 steps{
  powershell("""$var = $env:mybuildvar
   cmdlet2 $var""")
 }
}

我该如何实现?谢谢!

“”“”“”似乎适用于批处理,但不适用于 powershell。 此外,如果我尝试使用 $var 进行转义或不使用 JobDSL,则会失败

ERROR: (sandbox_CI_Dev, line 15) No signature of method: javaposse.jobdsl.dsl.helpers.step.StepContext.powershell() is applicable for argument types: (java.lang.String) values: [$var = $ENV:mybuildvar]

该错误可在 jobdsl playground (http://job-dsl.herokuapp.com/) 上重现,请使用以下代码(或任何与上述代码类似的代码):

job('whatever') {
    steps{
        powershell("write-output $")
    }
}

powershell('write-output test; write-output test') 也不起作用

方法名称是powerShell,不是powershell。参见 https://jenkinsci.github.io/job-dsl-plugin/#path/job-steps-powerShell

和 Groovy 插入双引号字符串,参见 String interpolation。如果要使用美元符号 ($),则需要使用单引号来避免插值,例如'$var'。对多行字符串使用三重单引号。

job('whatever'){
  steps{
    powerShell('''$var = $env:mybuildvar
cmdlet2 $var''')
  }
}