如何在Jenkins中的特定节点上从TFS检出并运行管道文件?

时间:2019-02-26 14:59:52

标签: jenkins tfs jenkins-pipeline

我正在尝试运行一个管道作业,该作业从TFS中获取其管道文件,但是工作空间和检出的映射是在主服务器而不是从服务器上完成的。

我有安装在Linux机器上的Jenkins-master,我将Windows机器作为从机器连接到它。我为TFS选择了“ 来自SCM的管道脚本”选项来创建管道作业。
我怎样才能使Windows Slave运行该管道 job

主服务器无法运行该作业,因为它在linux上运行,并且在尝试将工作空间映射到TFS以下载管道脚本并运行它时会失败。
即使我创建了另一个管道作业并选择对脚本进行硬编码以运行我的原始管道作业,如下所示:

node('WIN_SLAVE') {
      build job: 'My_Pipeline'
}  

它不起作用。

我在输出中看到(上面的)初始脚本实际上在我的Windows从属服务器上运行,但是在构建作业“ My_Pipeline”时,它仍然尝试将工作区映射到Linux上的Jenkins-master机器路径/ var / jenkins / ...,它失败。

如果初始管道脚本在Windows从站上运行,为什么另一个管道脚本不在同一节点上运行?为什么要再次尝试从TFS检出管道文件到Jenkins-Master?

如何使Windows Slave检出管道文件并运行它?

1 个答案:

答案 0 :(得分:0)

这里有一些要检查的东西...

  1. 确保已禁用原始作业,或者正在完全重新定义它以在从属服务器上运行,因为您表示已为从属服务器设置了“另一个作业”。看来其他工作只是在触发先前的工作,而不是定义自己的规范。当作业在从属服务器上运行时,它就在运行原始作业中的任何设置。

此外,如果在对TFS进行更改时选中了要构建的框,那么每次对TFS进行更改时,您的原始作业仍会尝试运行。

  1. 验证从属服务器在“管理Jenkins”->“管理节点”下的从属配置中正确设置了远程根目录。

由于此从属作业正在触发您最初在主服务器上创建的另一个作业,因此它将按预期在主服务器上构建。

更改My_Pipeline作业本身以在从属服务器上运行,而不是引用My_Pipeline作业。如果您对原始作业使用声明性管道,请在原始作业设置内更改该原始作业以在从属服务器上运行。您可以按照上面的指示进行操作,只需在原始作业中定义节点即可。

如果原始作业是自由样式项目,则有一个标题为限制在何处可以运行该项目的复选框。检查并在标签表达式中包括从站的名称。当您运行作业时,它将仅限于从属。

最后,发布My_Pipeline作业会有所帮助。