dawn-liu

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一 在项目中有多个变量需要用户去填写,根据这些变量才能对项目进行构建,

这样的话,我们可以将这些变量以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 ....."
        }}
    }
}

 

posted on 2019-09-17 14:04  dawn-liu  阅读(425)  评论(0编辑  收藏  举报