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

问题描述 投票:1回答:1

我正在尝试运行一个管道作业,从TFS获取其管道文件,但工作区和结帐的映射是在Master而不是Slave上完成的。

我有一个安装在linux机器上的Jenkins-master,我连接了一台Windows机器作为它的奴隶。我为TFS选择了“来自SCM的管道脚本”选项创建了一个管道作业。 如何让windows slave运行该管道作业?

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

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

它不起作用。

我可以在输出中看到,初始脚本(上面)实际上是在我的windows slave上运行,但是当它构建作业'My_Pipeline'时,它仍然试图将工作空间映射到Jenkins-master的linux机器路径/ var / jenkins / ...它失败了。

如果初始管道脚本在windows slave运行,为什么其他管道脚本不在同一节点上运行?为什么再次尝试将管道文件从TFS签出到Jenkins-Master?

如何让windows slave检出管道文件并运行它?

jenkins tfs jenkins-pipeline
1个回答
0
投票

这里有一些要检查的事情......

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

此外,如果在将更改推送到TFS时检查了要构建的框,那么每次对TFS进行更改时,原始作业仍可能尝试运行。

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

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

而不是引用My_Pipeline作业,更改My_Pipeline作业本身以在从属服务器上运行。如果您对原始作业使用声明性管道,则将原始作业更改为在原始作业设置中在从属服务器上运行。您可以按照上述方式进行操作,只需在原始作业中定义节点即可。

如果原始作业是自由式项目,则会出现一个标题为Restrict的复选框,可以运行此项目。检查并在Label Expression中包含从站的名称。当您运行作业时,它将被限制为从属。

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

© www.soinside.com 2019 - 2024. All rights reserved.