jenkins管道失败,没有任何解释性异常



我有一个管道,其中包括机器名称等其他参数,例如,客户端应该从该分支的aws中获取最新的ami,然后将其放在地形将用于创建机器的clien.json中,但我希望用户能够提供该参数的值,当该参数没有值时,可以从开发中的最新ami中选择值,例如:

#/usr/bin/env groovy

管道{代理{标签为"新"}

parameters {
string(name: 'AMI_ID', defaultValue: '', description: '[Mandatory]')
}

stages {

stage('Retrieve latest AMI.') {
when {
expression { ${AMI_ID} == '' }
}
steps {
script {
AMI_ID = sh(script: "aws ec2 describe-images --region region1 --owners 123456 --filters "Name=tag:type,Values=develop" --query 'sort_by(Images, &CreationDate)[-1].ImageId'  | jq -r '.'", returnStdout: true).trim()
echo "AMI retrieved: " + $ { AMI_ID }
}
}
}
stage("Updating client data") {
environment {
TERRAHELP_KEY = credentials('some-key')
}
steps {
dir("data/clients/") {

clientJson = readJSON file: "${CLIENT}.json"
clientJson.put("client_ec2_eda_ami_id", ${ AMI_ID })
writeJSON file: "${CLIENT}.json", json: clientJson, pretty: 4
echo "Following  data will be applied:"
sh "cat ${CLIENT}.json"
}
}
}
}

}

发现根本原因是我向groovy传递了一个shell脚本变量,我说:

clientJson.put("client_ec2_eda_ami_id", ${ AMI_ID })

相反,我应该将AMI_ID传递给上面的groovy变量,并说:

clientJson.put("client_ec2_eda_ami_id",currentAmi(

代码的和平与aws查询变暗:

stage('Retrieve latest AMI.') {
}
steps {
script {
currentAmi = params.AMI_ID
if (currentAmi.isEmpty())
currentAmi = sh(script: "aws ec2 query blah blah")
echo  "Ami retrieved is: ${currentAmi}"
}
}
}
stage("Updating client data") {
environment {
TERRAHELP_KEY = credentials('some-key')
}
steps {
dir("data/clients/") {
clientJson = readJSON file: "${CLIENT}.json"
clientJson.put("client_ec2_eda_ami_id", currentAmi)
writeJSON file: "${CLIENT}.json", json: clientJson, pretty: 4
echo "Following  data will be applied:"
sh "cat ${CLIENT}.json"
}
}
}
}
}

相关内容

最新更新