在我的管道中,我有一个阶段,检查特定的计算机(节点)是否离线。如果是,我想跳过下一阶段。但是,下一阶段将设置为使用脱机代理,因此似乎无法检查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
}
}
}
}
运行此命令时,构建仅挂在“跳过此阶段”阶段。我假设是因为该代理处于脱机状态。已知代理处于脱机状态时,如何跳过此阶段?
答案 0 :(得分:1)
为了在分配代理之前评估表达式,您需要在 when 块中添加 beforeAgent 指令。
documentation的相关部分:
在
when
中输入agent
之前先评估stage
默认情况下,如果为
when
输入了stage
(如果已定义),则将评估agent
的{{1}}条件。但是,可以通过在stage
块中指定beforeAgent
选项来更改此设置。如果when
设置为true,则首先评估beforeAgent
条件,并且仅在when
条件评估为true时输入agent
。