我需要一些帮助与以下情况.我开始一个主代理Jenkins管道.我的管道是分阶段结构.前2阶段分配给主代理(更确切地说,我没有声明另一个代理).第三阶段称为Polyspace在我的情况下包含节点{}结构.这样做的目的是去执行这个阶段的另一个代理.
问题是:在那一刻,当我禁用参数Polyspace代理被选中进行结帐(我使用git作为SCM)。我想如果可能不选择代理。我的情况是,我只有1个代理执行这个,Polyspace“步骤和一个大的连续集成系统。所以,如果这个代理被选中,即使我的阶段被禁用,我也需要等到代理可用(我只有1个执行器)
信息:XXX_1 -〉主代理YYY_1 -〉代理,,Polyspace”Stage INIT,Compile are bydefault assigned to Main agent which is XXX_1 you can see in parameters“POLYSPACE”is disable which means WHEN condition from Polyspace stage is false
我的渠道:
@Library('SLXXX') _
log.init("info")
pipeline {
agent {
node {
label 'XXX_1'
}
}
triggers {
cron('H 1 * * *')
}
options {
disableConcurrentBuilds()
buildDiscarder(logRotator(numToKeepStr: '10'))
timeout(time: 4, unit: 'HOURS')
timestamps ()
}
parameters {
booleanParam(name: 'INIT', defaultValue: true, description: 'Init after yaml script update')
booleanParam(name: 'COMPILE', defaultValue: true, description: 'Run COMPILE')
booleanParam(name: 'POLYSPACE', defaultValue: false, description: 'Run polyspace')
}
stages {
stage('Init') {
when { expression { params.INIT } }
steps {
script {
xxx
}
script {
xxx
}
}
}
stage('Compile') {
when { expression { params.COMPILE } }
steps {
dir('ThirdParty/Jenkins') {
xxx
}
archiveArtifacts artifacts: 'xxx'
archiveArtifacts artifacts: 'xxx'
archiveArtifacts artifacts: 'xxx'
}
}
stage('Polyspace') {
agent {
node {
label 'YYY_1'
}
}
when { expression { params.POLYSPACE } }
options {
timeout(time: 3, unit: 'HOURS')
}
steps {
script {
// run polyspace build from yaml file description
mqPipelineConfigPolyspace(config)
}
}
}
}
post {
always {
echo 'This will always run for saving artifacts from failed tests'
}
success {
echo 'This will run only if successful'
script
{
xxx
}
}
failure {
echo 'This will run only if failed'
script
{
xxx
}
}
}
}
我想禁用POLYSPACE参数,并且代理选择应该被忽略。从该阶段开始的所有内容都应该被忽略。
1条答案
按热度按时间zqry0prt1#
在
when
条件块中,在agent
块之前使用beforeAgent
指令。在选择代理之前移动要计算的when
块。默认情况下,阶段的when条件将在输入该阶段的代理(如果定义了代理)后进行计算。但是,可以通过在when块中指定beforeAgent选项来更改此设置。如果beforeAgent设置为true,则将首先计算when条件,并且只有当when条件计算为true时,才会输入agent。Jenkins用户手册-管道语法-在阶段中输入agent之前评估when
放置在
when
块中的指令beforeAgent true
将被评估,如果参数值设置为false,则阶段将完成,这将避免选择/等待/启动声明的代理来运行条件/阶段。将jenkinsfile“Polyspace”阶段更新为以下内容: