Continuous integration TeamCity构建代理从何处获得其路径环境?

Continuous integration TeamCity构建代理从何处获得其路径环境?,continuous-integration,environment-variables,teamcity,psake,teamcity-6,Continuous Integration,Environment Variables,Teamcity,Psake,Teamcity 6,我正试图建立TeamCity来构建我的项目,但我的psake构建脚本失败了,原因是它无法找到git可执行文件,而这应该在路径上。当我启动PowerShell并自己执行时,一切正常 Path环境变量的内容(如windows环境变量对话框中的系统变量列表所示,以及位于HKEY\U LOCAL\U MACHINE\System\ControlSet001\Control\Session Manager\environment\Path的注册表)如下所示: 然而,TeamCity表示,其环境路径只是 C

我正试图建立TeamCity来构建我的项目,但我的psake构建脚本失败了,原因是它无法找到git可执行文件,而这应该在路径上。当我启动PowerShell并自己执行时,一切正常

Path环境变量的内容(如windows环境变量对话框中的系统变量列表所示,以及位于
HKEY\U LOCAL\U MACHINE\System\ControlSet001\Control\Session Manager\environment\Path
的注册表)如下所示:

然而,TeamCity表示,其环境路径只是

C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Windows\System32\WindowsPowerShell\v1.0
我重新启动了计算机(多次),但没有任何帮助


为什么TeamCity build agent的PATH变量与系统默认值不同?我如何修复它?

解决方案位于build Configuration/6 build Parameters中,您可以在其中覆盖env.[ANYTHING]变量


我很高兴听到这个。我仍然决心在TeamCity方面取得成功。

tishma的评论暗示,我的解决方案是修改用户的
路径
环境变量,并重新启动
TeamCity构建代理服务


编辑:从TeamCity 7.1开始已修复,我遇到了相同的问题,只需重新启动TeamCity Build Agent服务以获取对PATH变量的更改。

您可以通过在Mac OS和Linux上添加名为“env.PATH”的生成参数来扩展生成代理的路径,该参数的值如下所示

%env.PATH%:/my/path
在Windows上,使用“;”而不是“:”作为路径分隔符

您还可以将以下内容添加到build agent安装目录中的conf/buildAgent.properties中

env.PATH=%env.PATH%:/my/path
(文件底部有一条说明如何设置环境变量的注释。)

前面的一些答案是正确的,但缺乏细节(我需要一些时间来真正理解它们)-我不清楚默认代理从何处获取其环境变量:因此,有一种方法可以在代理配置中清楚地修复它们

使用
env.PATH=/usr/which
编辑
TeamCity/buildAgent/conf/buildAgent.properties
文件即可。文件对此有详细说明


编辑完该文件后,您可以在UI中的
Agents>Default Agent>Agent Parameters>Environment Variables
中检查这些变量是否已更新(请注意,这些变量仅在代理连接时在UI中刷新;如果断开连接,UI将显示以前的值)。

我不想猜测,但是,如果您将其作为windows服务运行,则环境将来自运行该服务的用户。不,没有解决方案。我抛弃了TeamCity,现在改用CruiseControl.net。这里也一样。使用8.0.5,必须重新启动代理以获取更改。请注意:我认为
env.PATH=%env.PATH%:/my/PATH
将解析为文本
%env.PATH%:/my/PATH”
,除非先前在TC中已经定义了
%env.PATH%
。但是
%env.PATH%
与尝试使用%PATH%。要做到这一点,您可能需要使用%%PATH%%,以便转义百分比…我刚刚尝试了这个,发现施耐德的评论是错误的,mockaroodev的方法是有效的。
env.PATH=%env.PATH%:/my/path