Jenkins高级篇之Pipeline语法篇-8-Declarative Pipeline指令:input/when

本篇继续学习指令,input和when这两个。其中input很少使用,when使用多一些,特别涉及嵌套以及逻辑控制,使用when比较好。

 

指令1:input

该input指令允许在一个stage{…}显示提示输入等待。在inpt{…}写一些条件,然后用户触发构建这个job,但是这个时候没有接收到有效的input, job会一直在等待中,你可以在例如job #1的output console中,点击这个input条件,提供input,构建才会继续。

下面解释input{…}里面支持写那些option。

message

这个option是必须的,这个message会在用户提交构建的页面显示,提示用户提交相关的input条件。

id

这个id是一个可选的option,可以作为这个input的标记符,默认的标记符是这个stage的名称。

ok

这个ok也是一个可选的option, 主要是在ok按钮上显示一些文本,在input表单里。

submitter

这个submitter也是一个可选的option,里面可以写多个用户名称或者组名称,用逗号隔开。意思就是,只有这写名称的对应用户登陆jenkins,才能提交这个input动作,如果不写,默认是任何人都可以提交input。

parameters

这个也是一个可选的option, 和我们前面学的parameters没有区别,就是定义一些参数的地方。

 

这个input看到这里,估计不好理解,那么下面,结合代码和jenkins环境,你自己操作一下就明白怎么一回事。

代码举例:

pipeline {
    agent any
    stages {
        stage('Example') {
            input {
                message "Should we continue?"
                ok "Yes, we should."
                submitter "admin,anthony"
                parameters {
                    string(name: 'PERSON', defaultValue: 'Mr Anthony', description: 'Who should I say hello to?')
                }
            }
            steps {
                echo "Hello, ${PERSON}, nice to meet you."
            }
        }
    }
}

上面代码的意思:运行之前,需要提供input,而且这个input提交,只有admin和anthony这两个用户可以,其他用户提交会失败。把这段代码拷贝到一个pipeline类型的job设置的pipeline tab页面。

保存之后,如果在我jenkins环境(第二篇文章提供url和账号),用anthony登陆,点击build now,这个时候,你需要去你触发这个构建号下的output console,可以看到有一个input requested。

点击上面的Input requested, 出现如下页面,点击 Yes, we should, 这个就是一个ok button

然后这个job才会继续执行下去。好了,input是一个比较新的指令,可能有些旧版本的jenkins不支持,这个指令我在实际工作中没有使用到,我的建议,了解下有这个指令就好。

 

指令2: when

该when指令允许Pipeline根据给定的条件确定是否执行该阶段。该when指令必须至少包含一个条件。如果when指令包含多个条件,则所有子条件必须为舞台执行返回true。这与子条件嵌套在一个allOf条件中相同(见下面的例子)。

更复杂的条件结构可使用嵌套条件建:not,allOf或anyOf。嵌套条件可以嵌套到任意深度。When{…}是写在stage{…}里面一层条件控制,下面来看看when{…}支持的一些内置条件命令。

 

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' } }

举例一个 使用expression条件的when的代码示例。

pipeline {
    agent any
    environment {
        quick_test = false
    }
    stages {
        stage('Example Build') {
            steps {
                script {
                    echo 'Hello World'
                }
            }
        }
        stage('Example Deploy') {
            when {
                expression { 
                   return  (quick_test == “true” )
                    
                }
            }
            steps {
                echo 'Deploying'
            }
        }
    }
}

解释一下,我在environment里面定义了一个键值对“quick_test = false”, 如果就这么跑,第二个stage('Example Deploy') 是不会被执行的,因为不满足when{…}里面的条件。所以,跑的结果分别从Stage view UI和output console就是这样的。

从控制台和Stage view UI看到,第二个Deploy的stage确实没有执行,也没有输出相关打印语句。下面我们去config里面,把quick_test = false 改成quick_test = true,再跑一个构建。结果应该是如下图。

本篇就介绍input和when这两个指令到这里,建议把when里面支持的这几个指令都写一个pipeline代码进行测试下,官网文档还有google都可以找到一些例子。

 

 

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jenkins Pipeline是一种可将软件交付过程定义为代码的方式。它使用一种基于Groovy的DSL(领域特定语言)来描述构建和部署过程。下面是一些Jenkins Pipeline语法要点: 1. 定义Pipeline:在Jenkinsfile中使用`pipeline`关键字来定义Pipeline。可以选择Declarative Pipeline或Scripted Pipeline。 2. Declarative Pipeline:使用`pipeline`块包裹整个Pipeline,并使用`stages`块来定义各个阶段。每个阶段内可以包含多个步骤。 ```groovy pipeline { agent any stages { stage('Build') { steps { // 构建步骤 } } stage('Test') { steps { // 测试步骤 } } // 可以定义更多阶段 } } ``` 3. Scripted Pipeline:使用`node`或`stage`等关键字来定义节点或阶段,并在节点或阶段内编写Groovy脚本。 ```groovy node { // 节点级别的操作 stage('Build') { // 构建步骤 } stage('Test') { // 测试步骤 } // 可以定义更多阶段 } ``` 4. 步骤(Steps):在每个阶段或节点内,可以使用各种Jenkins提供的步骤来执行具体任务,例如构建、测试、部署等。步骤可以是Jenkins内置的或插件提供的。 ```groovy stage('Build') { steps { // 执行构建任务 sh 'mvn clean install' } } ``` 5. 环境变量:可以使用`environment`块来定义Pipeline的环境变量。 ```groovy pipeline { environment { MY_VAR = 'value' } stages { // 阶段定义 } } ``` 以上是Pipeline的基本语法要点,你可以根据实际需求来组织和扩展Pipeline。更详细的语法和示例可以参考Jenkins官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值