詹金斯:“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的主要内容,如果未能解决你的问题,请参考以下文章