#jenkins #jenkins-pipeline #jenkins-plugins #jenkins-groovy #jenkins-cli
Вопрос:
Здравствуйте, у меня есть следующий код в качестве файла Дженкинса.
pipeline {
agent any
parameters{
string(name: 'IP_ADDRESS', defaultValue: '', description: 'Enter server IP address')
string(name: 'USERNAME', defaultValue: '', description: '')
string(name: 'PASSWORD', defaultValue: '', description: '')
}
environment{
VERSION='1.3.0'
}
stages {
stage('Build') {
steps {
echo 'Built'
sh(script:"python sshMac.py ${IP_ADDRESS} ${USERNAME} ${PASSWORD}", returnStatus: true, returnStdout: true)
}
}
stage('Test') {
steps {
script{
env.FILENAME = readFile 'macAdds.properties'
env.FILEDATA = FILENAME.tokenize( "," )
input message: 'Please choose one',
parameters: [
[$class: 'ChoiceParameter',
choiceType: 'PT_SINGLE_SELECT',
description: 'Select the Environemnt from the Dropdown List',
filterLength: 1,
filterable: false,
name: 'ENVIRONMENT',
script: [$class: 'GroovyScript',
fallbackScript: [
classpath: [],
sandbox: true,
script: 'return ["ERROR"]'
],
script: [
classpath: [],
sandbox: true,
script: """
return['1', '2', '3', '4']
""".stripIndent()
]
]
],
[$class: 'ChoiceParameter',
choiceType: 'PT_SINGLE_SELECT',
description: 'Select the Environemnt from the Dropdown List',
filterLength: 1,
filterable: false,
name: 'ENVIRONMENT2',
script: [$class: 'GroovyScript',
fallbackScript: [
classpath: [],
sandbox: true,
script: 'return ["ERROR"]'
],
script: [
classpath: [],
sandbox: true,
script: """
return['1', '2', '3', '4', '5']
""".stripIndent()
]
]
],
[$class: 'CascadeChoiceParameter',
choiceType: 'PT_SINGLE_SELECT',
description: 'Select a choice',
filterLength: 1,
filterable: false,
name: 'choice1',
referencedParameters: 'ENVIRONMENT',
script: [$class: 'GroovyScript',
fallbackScript: [
classpath: [],
sandbox: true,
script: 'return ["ERROR"]'
],
script: [
classpath: [],
sandbox: true,
script: """
def tokens = ${FILENAME}.tokenize(',')
switch(ENVIRONMENT) {
case "1":
return ${env.FILEDATA}
case "2":
return ${env.FILEDATA}
case "3":
return ${env.FILEDATA}
case "4":
return ${env.FILEDATA}
}
"""
]
]
],
text(name: 'vertical', defaultValue: "${FILENAME}")
]
}
echo 'Testing'
echo "${FILENAME}"
echo "${FILEDATA}"
}
}
stage('Deploy') {
steps {
echo 'Deploying'
}
}
}
}
Итак, здесь я получил значения из файла (ИМЯ ФАЙЛА) и разделил их на список (ДАННЫЕ ФАЙЛА). Он отлично работает, и он тоже печатает и воспроизводит эхо. На самом деле он возвращает набор Mac-адресов из macAdds.свойства, такие как [ff:ff:ee:ee:ee:ff, ff:ee:dd:aa:bb:ee, ff:ee:aa:cc:bb:dd].
Но в моем опорном параметре активного выбора (choice1), когда я возвращаю значение FILEDATA в моем случае переключения как одиночный выбор, он не работает, где он будет запускать сценарий отката и выдает мне ошибку. Я протестировал возврат некоторых случайных значений, заданных вручную операторам switch, где это работает идеально. Я хочу знать, почему я не могу вернуть значения в моем скрипте активного ссылочного параметра выбора (choice1). Помоги мне выбраться!! Спасибо
Ответ №1:
Что ж, я нашел ответ на это решение. Когда вы используете значение groovy sandbox, как через, вы можете делать многое без ограничений. Но вы должны утвердить сценарий вручную в разделе Управление Дженкинсом => Утверждение сценария>. Надеюсь, это кому-нибудь поможет. Спасибо!