1. Передайте переменную groovy в оболочку
Ваш образец не работает, потому что вы используете строковый литерал с одинарными кавычками. Из Groovy manual (выделено мое):
Любое выражение Groovy может быть интерполировано во все строковые литералы, кроме single и тройные одинарные кавычки строки.
Попробуйте это:
sh "echo 'Hello World. Var=$var'"
Или это:
sh """
echo 'Hello World. Var=$var'
echo 'More stuff'
"""
2. Установка переменной Groovy из оболочки
Вы не можете напрямую установить переменную Groovy из шага оболочки. Это работает только в одном направлении от Groovy до оболочки. Вместо этого вы можете установить код выхода или записать данные в стандартный вывод, которые Groovy может прочитать.
Вернуть одно целое число
Передать true
для параметра returnStatus
и установить код выхода из сценарий оболочки, который будет возвращаемым значением шага sh
.
var = sh script: 'exit 42', returnStatus: true
echo "$var" // prints 42
Вернуть одну строку
Pass true
для параметра returnStdout
и использовать echo
из сценарий оболочки для вывода строковых данных.
var = sh script: "echo 'the answer is 42'", returnStdout: true
echo "$var" // prints "the answer is 42"
возврат структурированных данных
передача true
для параметра returnStdout
и использование echo
из сценария оболочки для вывода строковых данных в JSON формат.
Анализ JSON данных в коде Groovy с использованием JsonSlurper
. Теперь у вас есть обычный Groovy объект, который вы можете запросить.
def jsonStr = sh returnStdout: true, script: """
echo '{
"answer": 42,
"question": "what is 6 times 7"
}'
"""
def jsonData = new groovy.json.JsonSlurper().parseText( jsonStr )
echo "answer: $jsonData.answer"
echo "question: $jsonData.question"