【问题标题】:Why is Jenkins ignoring the %PATH% variable when using MSBuild?为什么 Jenkins 在使用 MSBuild 时会忽略 %PATH% 变量?
【发布时间】:2011-08-09 18:22:17
【问题描述】:

我正在尝试使用 Jenkins 来编译我使用 Delphi 创建的 MSBuild 项目。我已将 MSBuild 插件安装到 Jenkins 中并进行了配置。我正在为我的构建作业选择特定的配置。

我已经在 J​​enkins 中设置了 Delphi 编译器所需的所有环境变量(来自 rsvars.bat 用于您的 Delphi 类型。)

项目在命令行上编译得很好。如果我在命令行上执行此操作,MSBuild 会在用于调用 Delphi 编译器的命令行中报告一个不错的大 PATH(正确的)。

但是,当我尝试将它与 Jenkins 一起使用时,结果却大不相同:

C:\Program Files (x86)\Embarcadero\RAD Studio\8.0\bin\dcc32.exe -$D- -$L- -$Y- --no-config -B -Q -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE -DRELEASE -K00400000   HTMLWriterTestApp.dpr   
  Embarcadero Delphi for Win32 compiler version 22.0
  Copyright (c) 1983,2010 Embarcadero Technologies, Inc.

Noet 完全没有路径,或者任何其他信息都可以找到编译器需要的东西。当我从命令行运行时,这些信息就在那里。

谁能想到 Jenkins 未能获得正确 PATH 信息的任何原因?

【问题讨论】:

    标签: delphi msbuild hudson environment-variables jenkins


    【解决方案1】:

    根据您运行 Jenkins 的方式,它可能没有您习惯看到的完整路径行。例如,如果您将 Jenkins 作为 Windows 服务运行并填充了用户路径变量,则不一定要为 SYSTEM 用户填充它。在这种情况下,请将服务使用的登录帐户修改为您的帐户,而不是系统帐户。

    【讨论】:

    • 是的!就是这样!非常非常感谢。这让我发疯了。
    • Rapid Environment Editor(位于 www.rapidee.com)是一款不错的应用程序,您可以非常快速地发现这样的事情......
    • Fabricio -- 快速环境编辑器 +1。很棒的工具。
    【解决方案2】:

    我让 Jenkins 在 Glassfish 内的服务器上运行,作为本地系统帐户运行,因为它已安装 by using a derivation of this blog post,我能够通过在“系统配置”中设置属性变量来使其工作(Jenkins Jenkins 中的环境注入器插件)。 (BDS、BDSCOMMONDIR、FrameworkDir、FrameworkSDKDir 等...)

    那么 Delphi 选择合适路径的技巧就是将命令行参数“Win32LibraryPath”发送到 MSBuild。确保在 Jenkins 的这个参数中转义你的双引号,否则你会拔掉你的头发。

    【讨论】:

      【解决方案3】:

      我让 Jenkins 作为 Windows 服务启动,即使系统用户的 PATH 变量中有 SVN\bin,它也找不到 SVN 命令。

      似乎该服务仅使用启动时可用的环境变量。 因此,如果稍后您向 Windows 系统用户添加更多环境变量,它们将不可用于服务。 您所要做的就是重新启动窗口服务,它会选择新的环境变量!

      【讨论】:

        【解决方案4】:

        任何带有 git pull/ 的 git 命令,但未从 Jenkins 执行,是因为 Windows 环境变量中的路径问题。

        1. 检查环境变量中的PATH
        2. 检查是否从 Windows 命令提示符执行相同的命令。
        3. 如果它正在执行并且 Windows 作为从属服务运行,则从 services.msc 重新启动从属服务。
        4. 注销并重新登录 Jenkins。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-05
          • 2016-08-01
          • 2012-05-10
          • 1970-01-01
          • 2016-06-20
          • 2012-04-05
          • 1970-01-01
          • 2021-06-27
          相关资源
          最近更新 更多