[英]Assign extracted values from aws command to variables in jenkins pipeline
def id
def state
pipeline {
agent any
stages{
stage('aws') {
steps {
script{
/*extract load generator instanceId*/
sh "aws ec2 describe-instances --filters 'Name=tag:Name,Values=xxx' --output text --query 'Reservations[*].Instances[*].{id:InstanceId,state:State.Name}' --region us-east-1"
echo "id and state: ${id} ${state}"
}
}
}
}
}
我正在嘗試使用上述命令提取xxx
實例的實例instace id
和state
,並能夠獲取它們的值,但是當我嘗試echo
它們時,我將得到的值為null
。 所以它們沒有被分配給${id}
和{state}
變量有什么辦法可以將它們分配給jenkins pipeline
的上述變量注意:不想使用jq
謝謝
您當前的實現未分配任何變量,shell,Jenkins或其他任何變量。 id
和instanceState
只是aws命令上下文中其他字段的別名。 為了能夠在管道的上下文中訪問這些值,我建議將sh
步驟的輸出與readJSON
步驟結合在一起(它是管道實用程序steps插件的一部分)。 然后,您可以執行以下操作:
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]}"
}
}
}
}
}
}
(我為最低限度的測試用例手工制作了其中的幾個項目;請發布您遇到的任何錯誤,我們會進行清理)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.