詹金斯:“TF 命令行可执行文件”不查看 MAC 从站的路径来查找 tf.exe

Posted

技术标签:

【中文标题】詹金斯:“TF 命令行可执行文件”不查看 MAC 从站的路径来查找 tf.exe【英文标题】:Jenkins: "TF command line executable" does not look into MAC slave's path to find the tf.exe 【发布时间】:2014-12-15 23:06:10 【问题描述】:

我已经设置了一个 MAC 从站,并在 MAC 从站的任何地方下载了 Team Explorer。我确实在奴隶和主人上都设置了路径。如果我进入从机并运行它,TF 命令运行良好。问题是,当我在“TF 命令行可执行文件”中键入“tf”时,Jenkins 拒绝查看 MAC 从站的路径。它只查看 windows master 的路径。这是我得到的错误:

java.io.IOException:无法运行程序“tf”(在目录“/build/workspace/Aries_Mac”中):错误=2,没有这样的文件或目录

我知道 Jenkins 不查看 mac 路径的原因是,我尝试手动输入 mac 路径。这就是詹金斯向我展示的:

TF 命令行可执行文件

PATH: C:/Windows/system32, C:/Windows, C:/Windows/System32/Wbem, C:/Windows/System32/WindowsPowerShell/v1.0/中没有这样的可执行文件/build/TEE-CLC , C:/Program Files/Microsoft SQL Server/110/Tools/Binn/, c:/Program Files (x86)/Microsoft ASP.NET/ASP.NET Web Pages/v1.0/, C:/Program Files/Microsoft /Web 平台安装程序/、C:/Program Files/nodejs/、C:/Program Files/Npm/npm、C:/flex-build/apache-ant-1.8.4/bin、C:/Program Files (x86) /Windows Kits/8.1/Windows Performance Toolkit/, C:/ProgramData/chocolatey/bin, C:/Program Files (x86)/Git/cmd, C:/Program Files/Git/cmd, C:/tools/python2, C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE.*

但如果我仍然保存配置,我不会再收到 java.io.IOException 错误。这证实了如果我手动输入 MAC 的 TF 路径,即使“TF 命令行”没有选择它,它也可以正常工作。但是,显然它破坏了我的 Windows 工作。

我已经尝试了我所知道的几乎所有东西,我已经设置了路径,我已经重新启动了 Jenkins 几次。我通过登录从机在从机上运行tf eula -accept 命令。我想不出别的了。

【问题讨论】:

人们将“Macintosh”缩写为​​“MAC”还是“Mac”?我在您的问题中看到了“MAC”,并想到了媒体访问控制。 很抱歉给您带来了困惑。我的意思是 Macintosh。 【参考方案1】:

Jenkins 在基于 Linux 的系统(包括 Mac)上以 jenkins 用户身份运行。您必须将路径添加到jenkins 用户,而不是您的登录用户。

【讨论】:

我确实为 Jenkins 用户添加了路径。我什至为 Mac 上的所有用户添加了路径。 在 Jenkins 的 Mac Slave 上的 Execute Shell 中键入 echo $PATH 好的,所以我输入了 echo $PATH。我得到了路径信息,但是我看不到我在 Mac 上设置的“Tf”路径。我已经使用以下命令为 Mac 上的所有用户设置了路径:sudo pico /etc/paths。当我通过以不同用户身份登录机器来回显 $PATH 时,我确实看到了我为我登录的所有用户添加的路径。现在我有点困惑我的 Mac_slave 在哪个用户下运行,因为我没有看到我添加的路径。我为它创建了一个单独的用户,并且在系统信息下 user.name 向我显示了与我创建的完全相同的用户名。所以我假设我的 Mac-Slave 在那个用户下运行。 重启slave(进程)。环境配置(包括路径)在创建环境时分叉一次。我不太了解为 Mac 设置路径,但这是您的问题(正如您所验证的那样)。最坏的情况,你总是可以在 Jenkins 全局配置中配置一个全局路径变量。 好吧,我再次设置了我的 Mac Slave 并通过 Jenkins 执行了 echo $PATH。这次我可以看到我设置的路径,但不幸的是我的“TF.exe”问题仍然存在。所以,我想路径没有问题。就像我在问题中发布的那样,詹金斯只是拒绝查看我的 Mac_slave 来查找“Tf.exe”的路径。【参考方案2】:

好吧,在我发布解决方法之前,我想说我确实更改了 Jenkins 使用的路径。 (/等/配置文件)。我什至尝试在我的从属配置中添加环境变量 PATH ,但都没有奏效。我只是无法从插件中获取 tf 命令。如果我从 shell 执行 tf 它工作正常。 echo $PATH 命令向我显示了我添加的路径,但是我无法让插件为我工作。

解决方法:我将文件从 Team Explorer Everywhere 复制并粘贴到 /bin 文件夹中。这解决了问题,插件工作正常。这不是一个很好的方法,但这个解决方案一直有效,直到我能够找到一个更好的解决方案。

【讨论】:

以上是关于詹金斯:“TF 命令行可执行文件”不查看 MAC 从站的路径来查找 tf.exe的主要内容,如果未能解决你的问题,请参考以下文章

詹金斯cron格式

詹金斯 - 将视图移入视图

詹金斯错误中的声纳扫描仪与任何配置的安装不匹配

詹金斯工作的 Ansible 提示

詹金斯生成文件错误

詹金斯 JRE 更新