一尘不染

如何使用管道插件在特定节点上触发jenkins构建?

jenkins

我有一个名为“ TestPipeline”的詹金斯管道作业。我想在两个不同的从属服务器上触发构建,标记为“ tester1”和“
tester2”,并且管道脚本在这里非常简单:

node('tester1') {
    build 'test_job'
}
node('tester2') {
    build 'test_job'
}

但是,当我运行TestPipeline作业时,“ test_job”将不会在我分配的节点上运行。但改为在随机节点上运行。

我想知道是否应该在我的“ test_job”上设置“限制可以在哪里运行该项目”。因此,我将其设置为“ tester”(“ tester”标签同时包含节点“
tester1”和“ tester2”)。但是,当我再次运行管道作业时,“ test_job”在“ tester2”上运行了两次。我应该期望该作业先在“
tester1”上运行,然后在“ tester2”上运行。这是为什么?是因为在构建步骤应该在哪个节点上构建时,“节点”步骤无关紧要?


阅读 428

收藏
2020-07-25

共1个答案

一尘不染

请在这里查看错误。解决方法如下。

  1. 安装节点和标签参数插件
  2. 在test_job的配置中,选择“此构建已参数化”并添加Label参数,并将参数名称设置为“ node”
  3. 在管道脚本中,使用代码:

    build job: ‘test_job’, parameters: [[$class: ‘LabelParameterValue’, name: ‘node’, label: ‘tester1’]]
    build job: ‘test_job’, parameters: [[$class: ‘LabelParameterValue’, name: ‘node’, label: ‘tester2’]]

这项工作将按我的意愿进行。

但是 ,我认为这只是一种解决方法。我仍然相信这是一个错误。因为节点步骤应该执行其工作,而不是让其他插件来完成。

2020-07-25