#jenkins #groovy
#дженкинс #groovy
Вопрос:
Я пытаюсь разобраться в сценариях groovy, чтобы внести некоторые изменения в конвейер Дженкинса, и я продолжаю получать эту ошибку:
groovy.lang.MissingPropertyException: нет такого свойства: реквизит для класса: groovy.lang.Привязка
Я попытался объявить переменную с помощью def, но я все равно получаю исключение
pipeline {
agent any
stages {
stage('Build'){
steps {
script {
// env.application_servers = 'sl2o2xbar01;sl2o2xbar02'
def hb_parameters = []
if (env.application_servers.length() > 0) {
if (env.hb_job_params.length() > 0){
try {
//env.hb_job_params
/*
{
"sl2o2xbar01": {
"ENV": "DEV",
"dev_xbar_host": "sl2o2xbar01"
},
"sl2o2xbar02": {
"ENV": "DEV",
"dev_xbar_host": "sl2o2xbar0"
}
}
*/
def props = readJSON text: env.hb_job_params
//props = ['sl2o2xbar01':['ENV':'DEV', 'dev_xbar_host':'sl2o2xbar01'], 'sl2o2xbar02':['ENV':'DEV', 'dev_xbar_host':'sl2o2xbar02']]
def hb_job_application_servers = props.keySet()
echo "${props}"
} catch(e) {
echo "Caught: ${e} JSON not valid."
currentBuild.result = 'FAILURE'
}
}
application_servers_list = env.application_servers.split(';')
for( String application_server : application_servers_list ){
if (
env.application_services_list.contains('heartbeat_consumer') amp;amp;
props.get(application_server)
){
for ( param in props.get(application_server)) {
hb_parameters.add([$class: 'StringParameterValue', name: ${param.key}, value: ${param.value}])
}
echo hb_parameters
echo "triggering heartbeat_consumer build"
build job: "dvmt30-realm-monitor", wait: false, parameters: hb_parameters
}
}
}
}
}
}
}
}
Комментарии:
1. Чувак, ты вообще смотрел на проблему, которую я описал?
Ответ №1:
Ваше определение переменной props находится внутри try-catch:
try {
def props = readJSON text: env.hb_job_params
...
}
Но позже вы пытаетесь использовать его в props.get(application_server)
, и эта переменная больше не существует в этот момент