如果代理离线,如何跳过阶段?

时间:2019-10-15 12:07:23

标签: jenkins jenkins-pipeline jenkins-groovy

在我的管道中,我有一个阶段,检查特定的计算机(节点)是否离线。如果是,我想跳过下一阶段。但是,下一阶段将设置为使用脱机代理,因此似乎无法检查When子句。

这是我的管道的简化版本:

pipeline {
    agent none

    environment {
        CONTINUERUN = true
    }

    stages {
        stage('Check Should Run') {
            agent any
            steps {
                script {
                    CONTINUERUN = false
                }
            }
        }

        stage('Skip this stage') {
            agent {
                label 'offlineAgent'
            }
            when {
                expression {
                    CONTINUERUN
                }
            }
            steps {
                //Do stuff here
            }
        }
    }
}

运行此命令时,构建仅挂在“跳过此阶段”阶段。我假设是因为该代理处于脱机状态。已知代理处于脱机状态时,如何跳过此阶段?

1 个答案:

答案 0 :(得分:1)

为了在分配代理之前评估表达式,您需要在 when 块中添加 beforeAgent 指令。

documentation的相关部分:

  

when中输入agent之前先评估stage

     

默认情况下,如果为when输入了stage(如果已定义),则将评估agent的{​​{1}}条件。但是,可以通过在stage块中指定beforeAgent选项来更改此设置。如果when设置为true,则首先评估beforeAgent条件,并且仅在when条件评估为true时输入agent