TeamCity Server - 无法在路径中找到 P4 命令行客户端

TeamCity Server - Unable to find P4 command-line client in path

我做了很多研究,以找到其他有类似问题的人,但我最接近的是在平台上使用 TeamCity 的人(Mac OS X 或Windows),因此可以使用 p4 的完整路径(例如 /usr/local/bin/p4 或 C:\Program Files (x86\Perforce\p4.exe).

但是,我的服务器 运行s 在 Mac OS X 上,我在 OSX 和 Windows 8 上都有代理。所以这里是我的问题从哪里开始。

当运行我的Team City在普通用户下,我们叫他'joe',通过launchctl,VCS有问题

Failed to collect changes, error: Unable to find P4 command-line client at path 'p4' on joe-his-computer for user joe

请注意,p4 是我所有构建配置 VCS 设置中的 p4 可执行文件的路径。 (默认)

另一个问题是我使用我的 VCS 作为代理结账而不是服务器结账。

当我 运行 我的服务器不是作为守护进程而是通过 ssh 以 'joe' 登录并通过 <TeamCity Server Data Dir>/bin/teamcity-server.sh 启动它时,就没有问题了,他可以在我的服务器和代理上访问 p4。

这让我很沮丧,因为我似乎无法找到为什么会出现这个问题。我尝试的另一件事是将我的构建配置中的路径定义为 %env.P4PATH 并确保我所有的代理都有执行强制的完整路径(尽管这很荒谬,因为很明显我的服务器有问题而不是我的代理) .

遗憾的是,这也不起作用,因为 %env.P4PATH 未在我的服务器上定义。

现在我只是通过我知道它工作的唯一方式使用我的 TeamCity 服务器,但我真的很想 运行 它作为守护进程(launchagent),因为它会确保我的服务器是即使在断电后也始终处于活动状态。

如果您需要更多详细信息来帮助我,请告诉我。

编辑: 再次手动启动我的 TeamCity 后,我发现我的 OS X 构建代理有同样的问题。该代理 运行ning 在与服务器相同的 OS X 计算机上,并且也是通过 launchctl.

启动的

那个代理的错误信息说:

Failed to perform checkout on agent: Unable to find P4 command-line client at path 'p4' on joe-his-computer for user joe

感谢一位同事,我发现了这个问题。在那台特定的机器上,p4/usr/local/bin 中,但 /usr/local/bin 不在我的 PATH 中。通过将 p4 移至 /usr/bin,我解决了 OSX AgentOSX Server 的问题。