【发布时间】:2019-05-23 15:36:37
【问题描述】:
我正在为 jenkins 编写一个使用 NodeLabel Parameter Plugin 的 Jenkinsfile。在这里,我使用 NodeParameterDefinition 让用户能够选择应该进行构建的节点。我启用了allowMultiSelectionForConcurrentBuilds,但是在访问Jenkinsfile 中的参数值时,我仍然只得到一个只有一个节点名称的字符串。参数值类型也是字符串,如何获取用户为参数选择的所有节点?
参数定义:
[
$class: 'NodeParameterDefinition',
allowedSlaves: ['ALL (no restriction)'],
defaultSlaves: ['master'],
description: 'What nodes to run the build on.',
name: 'BUILD_NODE',
nodeEligibility: [$class: 'AllNodeEligibility'],
triggerIfResult: 'allowMultiSelectionForConcurrentBuilds'
]
所以如果我在执行的时候选择了多个节点,在访问这个参数值的时候还是只能得到一个节点名。
echo "Will build on $BUILD_NODE";
管道脚本无法启用多节点选择吗?
我如何访问参数值:
echo "Will build on $BUILD_NODE";
node("$BUILD_NODE")
{
...
}
【问题讨论】:
-
进度:我发现我需要以“params.”的形式访问参数。所以我需要使用 params.BUILD_NODE 来获取正确的对象作为 env.BUILD_NODE 和 BUILD_NODE 只是一个字符串表示。但是现在我有一个新问题,那就是参数是一个空对象。
标签: jenkins jenkins-plugins jenkins-pipeline