我有这个示例管道(它的一部分):
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}"
}