簡體   English   中英

將aws命令中提取的值分配給jenkins管道中的變量

[英]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 idstate ,並能夠獲取它們的值,但是當我嘗試echo它們時,我將得到的值為null 所以它們沒有被分配給${id}{state}變量有什么辦法可以將它們分配給jenkins pipeline的上述變量注意:不想使用jq謝謝

您當前的實現未分配任何變量,shell,Jenkins或其他任何變量。 idinstanceState只是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM