Skip to main content
 首页 » 编程设计

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

2024年12月31日13emanlee

我有一个名为“TestPipeline”的 Jenkins 管道工作。我想在标记为“tester1”和“tester2”的 2 个不同从站上触发构建。这里的管道脚本非常简单:

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

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

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

请您参考如下方法:

请看bug here .解决方法如下。

  • 安装 Node 和 Label 参数插件
  • 在test_job的配置中,选择'This build is parameterized'并添加一个Label参数并将参数名称设置为'node'
  • 在管道脚本中,使用代码:

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

    工作将按照我的意愿构建。

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