Многострочная команда powershell в JobDSL

Я работаю с JobDSL и не могу найти способ запустить несколько команд powershell за один раз. Пример:

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

Как мне этого добиться? Спасибо!

кажется, что """ """ работает для партии, но не для powershell. Кроме того, если я попытаюсь использовать $var с экранированием или без JobDSL, произойдет сбой с

ОШИБКА: (sandbox_CI_Dev, строка 15) Нет подписи метода: javaposse.jobdsl.dsl.helpers.step.StepContext.powershell() применим для типов аргументов: значения (java.lang.String): [$var = $ENV: mybuildvar]

Ошибка воспроизводится на игровой площадке jobdsl (http://job-dsl.herokuapp.com/), используйте следующий код (или что-то похожее на код выше):

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

также powershell («тест записи-вывода; тест записи-вывода») не работает


person 4c74356b41    schedule 09.08.2016    source источник


Ответы (1)


Имя метода powerShell, а не powershell. См. https://jenkinsci.github.io/job-dsl-plugin/#path/job-steps-powerShell.

А Groovy интерполирует строки в двойных кавычках, см. Интерполяция строк. Вам нужно использовать одинарные кавычки, чтобы избежать интерполяции, если вы хотите использовать знак доллара ($), например. '$var'. Используйте тройные одинарные кавычки для многострочных строк.

job('whatever'){
  steps{
    powerShell('''$var = $env:mybuildvar
cmdlet2 $var''')
  }
}
person daspilker    schedule 09.08.2016
comment
омг, powerShell, это объясняет, почему он не работал с ''' ''' в моих тестах... клянусь богом, я бы никогда не поймал эту заглавную S. Спасибо, вероятно, сэкономил мне пару дней, если не недель ! - person 4c74356b41; 09.08.2016