在不同的奴隶上配置詹金斯工作 运行 的最佳方式

Best way to configure jenkins job running on different slaves

我想 运行 在 4 个不同的从站(windows、linux、solaris、Mac)上执行 Jenkins 作业。我不想做 4 份不同的工作,而是想做一份工作。我可以使用 Node 参数在不同的从站上执行。我的工作 运行 是一个脚本,它使用 Jenkins slave 工作区和一些其他脚本。我的脚本在每个奴隶上的不同文件夹中,其他所需的脚本在不同的文件夹中。所以现在我已经为每个奴隶和硬编码的 Jenkins 工作区和其他所需的脚本路径创建了 4 个不同的作业。

有什么方法可以让我将所有路径都放在一些类似于 JSON 的结构中,并根据 slave 来选择这些路径?这样我就只有一份工作。

求推荐,先谢过了!

Jenkins 旨在从版本控制系统(Subversion、Git 等)和 运行 任务中检出文件。与其尝试在不同的从服务器上管理不同的文件,不如将脚本置于某种形式的版本控制中,并让 Jenkins 在其构建过程中检出工作区中的文件。

我的想法是使用例如“执行系统Groovy脚本”来获取从值,然后使用if语句分配正确的路径并创建在环境中可见的参数变量:

import hudson.model.Computer
import hudson.model.StringParameterValue
import hudson.model.ParametersAction

//get slave name
def slaveName = Computer.currentComputer().getNode().name
def path

//choose path
if(slaveName.equals("slave01")){
  path = "C:"
}
if(slaveName.equals("slave02")){
  path = "/root"
}
if(slaveName.equals("slave03")){
  path = "D:"
}

//pass path as env. variable
build.addAction(new ParametersAction(new StringParameterValue('path', path)))

然后你可以在命令中使用变量路径: echo %path% 或使用 Conditional BuildStep Plugin 为每个操作系统设置可分离的步骤并控制每个步骤何时应该执行