是否可以仅在满足条件时指定代理'any'?
上下文:我有一个并行的管道,有一些共同的步骤。该管道在Linux和Windows上运行两个不同的代理。有一些参数定义是两个都运行,还是只运行Linux,或者只运行Windows。我希望使用尽可能少的代理。
通过下面的管道,Linux测试在 main 代理上执行。Windows测试在不同的代理上执行。因此,如果只需要运行Linux,我只使用1个代理,这很好。但是如果只需要运行Windows,main 代理将被阻塞,直到Windows代理完成。
pipeline {
agent any // main agent
parameters {
booleanParam( name: 'RUN_WINDOWS' )
booleanParam( name: 'RUN_LINUX' )
}
stages {
stage('Common step') {
...
}
stage("Test") {
parallel {
stage('Windows') {
agent any
when {
expression { return params.RUN_WINDOWS }
}
stages {
stage('Test Windows') {
...
}
}
}
stage('Linux') { // no agent specified, so will use the main agent
when {
expression { return params.RUN_LINUX }
}
stages {
stage('Test Linux') {
...
}
}
}
}
post {
...
}
}
}
}
在Windows阶段,我需要这样的代码,它只根据条件指定代理:
if (params.RUN_WINDOWS && params.LINUX) { agent any }
编辑:我正在寻找一个不使用标签的解决方案。
1条答案
按热度按时间qoefvg9y1#
作为一种解决方法,您可以有条件地设置代理标签,而不是设置
any
。如下所示。