【问题标题】:Where does a TeamCity build agent get its path environment from?TeamCity 构建代理从哪里获取路径环境?
【发布时间】:2012-02-08 07:20:57
【问题描述】:

我正在尝试设置 TeamCity 来构建我的项目,但我的 psake buildscript 失败了,原因被缩小为无法找到应该在路径上的 git 可执行文件。当我启动 PowerShell 并自己执行该操作时,一切正常。

Path环境变量的内容(如windows环境变量对话框中的系统变量列表,以及HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment\Path的注册表)是

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;c:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Git\cmd

然而 TeamCity 说它的 env.Path 只是

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 构建代理的 PATH 变量与系统默认变量不同,我该如何解决?

【问题讨论】:

  • 我不想猜测,但如果您将其作为 Windows 服务运行,则环境将来自运行该服务的用户。
  • 不,没有解决方案。我放弃了 TeamCity,现在改用 CruiseControl.net。

标签: continuous-integration environment-variables teamcity psake teamcity-6


【解决方案1】:

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

附:很抱歉听到这个。我仍然决心通过 TeamCity 取得成功。

【讨论】:

    【解决方案2】:

    tishma 的评论暗示我的解决方案是修改 UserPath 环境变量并重新启动 Team City Build Agent Service

    编辑:This bug 自 TeamCity 7.1 起已修复

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,只需要重新启动 Team City Build Agent Service 即可获取对 PATH 变量的更改。

      【讨论】:

      • 这里也一样。使用 8.0.5 并且必须重新启动代理才能获取更改。
      【解决方案4】:

      在 Mac OS 和 Linux 上,您可以通过添加名为“env.PATH”的构建参数以及以下值来扩展构建代理的路径。

      %env.PATH%:/my/path
      

      在 Windows 上使用“;”而不是“:”作为路径分隔符。

      您还可以将以下内容添加到构建代理安装目录中的 conf/buildAgent.properties。

      env.PATH=%env.PATH%:/my/path
      

      (文件底部有一条注释说明如何设置环境变量。)

      【讨论】:

      • 请注意:我认为env.PATH=%env.PATH%:/my/path 将解析为文字"%env.PATH%:/my/path",除非%env.PATH% 之前已在TC 中定义。但是%env.PATH% 与尝试使用 %PATH%;... 附加到现有路径不同。为此,您可能需要使用 %%PATH%% 以便对百分比进行转义...
      • 我刚试了一下,发现施耐德的评论是错误的,mockaroodev的方法有效。
      【解决方案5】:

      之前的一些答案是正确的,但缺乏细节(我需要一些时间才能真正理解它们)——我不清楚默认代理的环境变量在哪里:所以这里有一种方法可以清楚地修复它们在代理配置中。

      env.PATH=/usr/whatever 编辑TeamCity/buildAgent/conf/buildAgent.properties 文件就可以了。文档上有a small hint

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-14
        • 1970-01-01
        相关资源
        最近更新 更多