我试图将我的自由式作业转换为声明性管道作业,因为管道提供了更大的灵活性。我不知道如何在管道中使用NodeLabel参数插件(https://wiki.jenkins.io/display/JENKINS/NodeLabel+Parameter+Plugin)。
pipeline {
agent any
parameters {
// Would like something like LabelParameter here
}
stages {
stage('Dummy1') {
steps {
cleanWs()
sh('ls')
sh('pwd')
sh('hostname')
}
}
stage('Dummy2') {
steps {
node("comms-test02") {
sh('ls')
sh('pwd')
sh('hostname')
}
}
}
}
我基本上只需要一种方法来启动作业使用一个参数,指定在哪里建立作业(使用从属标签)。
Jenkins需要一个代理字段,我将其设置为“any”。但似乎没有一个标签参数可用?
作为替代方法,我尝试使用“node”命令(jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#-node- allocate node)。但这给我留下了两个运行的工作,而工作,看起来不那么漂亮。
任何人都可以使用NodeLabel参数插件吗?还是有人有更好的办法
*我需要能够在不同的节点上运行作业。在通过参数触发作业时,应决定运行的节点。节点标签插件完美地做到了这一点。但是,我无法在管道中重现此行为。
4条答案
按热度按时间fhg3lkii1#
下面是一个完整的例子:
vbopmzt12#
假设您使用管道上的NodeLabel插件添加了参数(例如名为
slaveName
)。现在需要提取slaveName
的值并将其输入到agent->node->label字段中。可以使用代理内的node属性指定节点。像这样-
wfsdck303#
下面的脚本可以让我在不同的Node上运行多个作业。
我从构建步骤插件文档中引用了参考资料。
https://www.jenkins.io/doc/pipeline/steps/pipeline-build-step/
zy1mlcev4#
要在声明式管道中使用Node and Label parameter plug-in,您需要执行以下操作: