2015-12-01 4 views
3

Для этого очень простого процесса:Дженкинс переменные окружения рабочего процесса, вызывающие отказ

env.FOO = 42 
node { 
    sh "echo $FOO" 
} 

Я получаю следующее сообщение об ошибке:

Running: End of Workflow 
groovy.lang.MissingPropertyException: No such property: FOO for class: WorkflowScript 

Как получить доступ к переменным окружения на этапах рабочего процесса оболочки?

ответ

2

У меня была проблема, когда мне нужно было интерполировать интерполяцию. Где часть скрипта интерполируется раньше, а часть скрипта интерполируется во время. Хитрость, чтобы избежать переменной (ы) вы хотите интерполированное во время запуска с помощью обратной косой черты:

def FOO = 42 

node { 
    sh """ 
    BAR = "hello $FOO" 
    echo \$BAR 
    """ 
} 

Так $ FOO расширяется до скрипт запускается, и \ $ BAR расширяется во время запуска сценария.

+0

это отличный совет! –

4

Причина в том, что с двойными кавычками строчная интерполяция Groovy запускается и ищет переменную FOO с рабочей областью.

Чтобы исправить одиночные кавычки:

sh 'echo $FOO' 

Примечания также можно использовать переменные рабочий процесс в скриптах с двойными кавычками:

def FOO = 43 

node { 
    sh "echo $FOO" 
} 

Это расширит значение $FOOперед тем сценария является запустить.

Смежные вопросы