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

Tes*_*101 3 jenkins jenkins-groovy jenkins-pipeline

在我的管道中,我有一个阶段可以检查特定计算机(节点)是否离线。如果是的话,我想跳过下一阶段。但是,下一阶段设置为使用离线代理,因此似乎无法检查 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
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,构建只是挂在“跳过此阶段”阶段。我假设,因为代理离线。当已知代理离线时,如何跳过此阶段?

ras*_*spy 5

为了在分配代理之前计算表达式,您需要将beforeAgent指令添加到when块。

文档的相关部分:

进入when之前进行评估agentstage

默认情况下,如果定义了whena 的条件,则在输入for thatstage后将评估 a 的条件。但是,可以通过在块中指定选项来更改此设置。如果设置为 true,则将首先评估条件,并且仅当条件评估为 true 时才会输入。agentstagebeforeAgentwhenbeforeAgentwhenagentwhen