Active Choices | Jenkins plugin をつかうと、パラメータを動的に設定できるようになる。
Pipeline Syntaxの画面でparametersブロックを作成できるが、そこに出てこないためscriptで書くしかなさそう。
以下のようにpropertiesで作成する。
properties([
parameters([
[$class: 'ChoiceParameter',
choiceType: 'PT_SINGLE_SELECT',
description: 'Select a choice',
filterLength: 1,
filterable: true,
name: 'Target',
script: [
$class: 'GroovyScript',
fallbackScript: [
classpath: [],
sandbox: true,
script: 'return ["ERROR"]'
],
script: [
classpath: [],
sandbox: false,
script: """
def lines = new File("/var/jenkins_home/workspace/paramlist.txt").readLines()
return lines
""".stripIndent()
]
]
]
])
])
pipeline {
agent any
stages {
stage("Run Tests") {
steps {
sh "echo SUCCESS on ${params.Target}"
}
}
}
}
他のパラメータの値に応じて選択肢を切り替える場合は CascadeChoiceParameter
が使える
Active choice parameter with declarative Jenkins pipeline - Stack Overflow
properties([
parameters([
[$class: 'CascadeChoiceParameter',
choiceType: 'PT_SINGLE_SELECT',
description: 'Select a choice',
filterLength: 1,
filterable: true,
name: 'Target',
referencedParameters: 'ENVIRONMENT', // 依存するパラメータ名を指定
script: [
$class: 'GroovyScript',
fallbackScript: [
classpath: [],
sandbox: true,
script: 'return ["ERROR"]'
],
script: [
classpath: [],
sandbox: true,
script: """
if (ENVIRONMENT == 'foo') {
return['aaa','bbb']
} else {
return['ccc', 'ddd']
}
""".stripIndent()
]
]
]
])
])
pipeline {
agent any
parameters {
choice(name: 'ENVIRONMENT', choices: ['foo', 'bar'])
}
stages {
stage("Run Tests") {
steps {
sh "echo SUCCESS on ${params.ENVIRONMENT} - ${params.Target}"
}
}
}
}