I am completely novice at Jenkins, this post Jenkins Plugin:Extended Choice Parameter from JSON file does work for me.
I want to load a list of versions from a json file, which name is input.json, and use this version list as choices of one parameter, named version_list. The input.json file is in my $WORKSPACE, it's content is :
{
"versions":["V1","V2"]
}
The pipeline script is as follows:
pipeline {
agent any
stages {
stage("load json") {
steps {
echo "version_list = ${params.version_list}"
}
}
stage("open_json") {
steps {
script {
def prop = readJSON file: "${env.WORKSPACE}/input.json"
def version_list = prop.versions
println version_list.join(',')
}
}
}
}
}
The parameter version_list is setted as follows:
Extended Choice Paramter
name: versioin_list
Parameter Type: Check Boxes
Choose Source for Value: Groovy Script, and it's content is:
def prop = readJSON file: "${env.WORKSPACE}/input.json"
def version_list = prop.versions
return version_list.join(',')
When I build this job, there is nothing to choice for parameter version_list, but the output shows it can read data from input.json, this is one output:
Started by user admin
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /home/hdl/.jenkins/workspace/json_as_parameter
[Pipeline] {
[Pipeline] stage
[Pipeline] { (load json)
[Pipeline] echo
version_list = null
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (open_json)
[Pipeline] script
[Pipeline] {
[Pipeline] readJSON
[Pipeline] echo
"V1","V2"
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
The load json stage can not get the value of ${params.version_list} but the open_json stage can load json properly.
If is replace groovy script of versison_list simpley as follows:
def version_list = ["V1","V2"]
return version_list.join(',')
It works well.
I don't know why. Any help, thanks!