Ваша текущая реализация не назначает никаких переменных, оболочек, Jenkins или других.id
и instanceState
являются просто псевдонимами для других полей в контексте команды aws.Чтобы иметь доступ к этим значениям в контексте конвейера, я бы порекомендовал объединить вывод шага sh
с шагом readJSON
(он входит в плагин утилита шагов конвейера ),Тогда вы можете сделать что-то вроде этого:
def id
def state
pipeline {
agent any
stages{
stage('aws') {
steps {
script{
/*extract load generator instanceId*/
instanceInfo = sh (
script: "aws ec2 describe-instances --filters 'Name=tag:Name,Values=xxx' --output text --query 'Reservations[*].Instances[*].{id:InstanceId,instanceState:State.Name}' --region us-east-1",
returnStdout: true
).trim()
instanceJSON = readJSON text: instanceInfo
instanceJSON.each { instance ->
echo "${instance.id[0]}: ${instance.instanceState[0]}"
}
}
}
}
}
}
(я выдумал пару таких вещей для моего минимального теста; пожалуйста, опубликуйте все ошибки, которые вы получите, и мы все исправим)