使用基于参数值选择的jenkins管道代理标签



我有这个示例管道(它的一部分):

pipeline {
parameters {
choice(name: 'myParam', choices: ['1','2'], description: 'param desc')
}
options { timestamps () }
agent {
node {
label 'myLabel'
}
}

我的问题是:

我想根据用户选择的myParam更改代理标签的myLabel。在这种情况下,我希望当myParam为1时,myLabel将等于"linux_first"当myParam为2时,myLabel将为"linux_second"。

有人知道怎么做吗?提前感谢,阿龙

我有一个非常类似的需求,我通过将参数设置为标签本身来解决它:

pipeline {
parameters {
choice(
name: 'myParam',
choices: ['linux_first','linux_second'],
description: 'param desc'
)
}
options { timestamps() }
agent { label "${params.myParam}" }
stages {
stage('Greeting') {
steps {
echo "Hello from ${env.NODE_NAME}"
}
}
}
}

如果你想保留你的choices: ['1','2'],那么它就更复杂了,并且在一个单独的阶段涉及到一段脚本化的管道:

pipeline {
agent none
parameters {
choice(name: 'myParam', choices: ['1','2'], description: 'param desc')
}
options { timestamps() }
stages {
stage('Configure') {
steps {
script {
if (params.myParam == '1') {
MY_AGENT_LABEL = 'linux_first'
} else {
MY_AGENT_LABEL = 'linux_second'
}
}
}
}
stage('Greeting') {
agent { label "${MY_AGENT_LABEL}" }
steps {
echo "Hello from ${env.NODE_NAME}"
}
}
}
}

您可以在声明性管道中以这种方式参数化代理

properties([
string(description: 'build Agent', name: 'build_agent')
])
pipeline {
agent {
label params['build_agent']
}
stages {
// steps 
}
}

方法1-

你可以试试"nodeLabelParameter"插件。它可能会根据您的需求为您提供帮助。

https://plugins.jenkins.io/nodelabelparameter/

这个插件为作业配置添加了两个新的参数类型——node和label。新的参数允许动态选择应该在哪里执行作业的节点或标签。

方法2 -

基本语法是为管道定义参数并使用它。

agent {
label "${build_agent}"
}

相关内容

  • 没有找到相关文章

最新更新