一 在项目中有多个变量需要用户去填写,根据这些变量才能对项目进行构建,
这样的话,我们可以将这些变量以json的格式写入文件,每个人可以放入自己的文件里面
构建的时候提供文件的路径就可以了
下面一个例子:
首先我们需要用户提供文件路径,配置:
然后编写pipeline语法:
import hudson.model.*; pipeline{ agent any stages{ stage("Hello Pipeline") { steps { script { println "Hello Pipeline!" println env.JOB_NAME println env.BUILD_NUMBER } } } stage("Init paramters in json") { steps { script { println "read josn input file" json_file = INPUT_JSON? INPUT_JSON.trim() : "" //读入用户写入的文件 prop = readJSON file : json_file name = prop.NAME? prop.NAME.trim() : "" println "Name:" + name age = prop.AGE? prop.AGE.trim() : "" println "Age:" + age println "is_marry:" + is_marry hehe = prop.hehe? prop.HEHE.trim() : "" //三元表达式,没有则为空 ,这条不存在,打印的时候就是空 println "hehe:" + hehe } } } }
二 when
when指令允许Pipeline根据给定的条件确定是否执行该阶段。该when指令必须至少包含一个条件。如果when指令包含多个条件,则所有子条件必须为舞台执行返回true。这与子条件嵌套在一个allOf条件中相同
下面是其常用的方法:
branch 当正在构建的分支与给出的分支模式匹配时执行阶段,例如:when { branch 'master' }。请注意,这仅适用于多分支Pipeline。 environment 当指定的环境变量设置为给定值时执行阶段,例如: when { environment name: 'DEPLOY_TO', value: 'production' } expression 当指定的Groovy表达式求值为true时执行阶段,例如: when { expression { return params.DEBUG_BUILD } } not 当嵌套条件为false时执行阶段。必须包含一个条件。例如:when { not { branch 'master' } } allOf 当所有嵌套条件都为真时,执行舞台。必须至少包含一个条件。例如:when { allOf { branch 'master'; environment name: 'DEPLOY_TO', value: 'production' } } anyOf 当至少一个嵌套条件为真时执行舞台。必须至少包含一个条件。例如:when { anyOf { branch 'master'; branch 'staging' } }
下面举例:
pipeline { agent any environment { quick_test = "test" //定义全局变量 } stages { stage('Example Build') { //没有条件判断,始终会执行 steps { script { echo 'Hello World' } } } stage('Example Deploy') { when { expression { return (quick_test == "production" ) //判断为production则执行 } } steps { echo 'Deploying' } } stage('exec test'){ when { expression { return (quick_test == "test" ) //判断为test则执行 } } steps{ echo "exec test ....." }} } }