为什么Jenkins在使用MSBuild时会忽略%PATH%变量?

Nic*_*ges 9 delphi msbuild hudson environment-variables jenkins

我正在尝试使用Jenkins来编译使用Delphi创建的MSBuild项目.我有安装到Jenkins并配置的MSBuild插件.我正在为我的构建作业选择特定的配置.

我已经在Jenkins编译器所需的Jenkins中设置了所有环境变量(对于Delphi类型,来自rsvars.bat).

该项目在命令行上编译得很好.如果我在命令行上执行此操作,MSBuild将报告一个很好的大胖PATH(正确的)作为它用于调用Delphi编译器的命令行的一部分.

但是,当我尝试将它与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.
Run Code Online (Sandbox Code Playgroud)

Noet完全没有路径,或者任何其他信息都是为​​了找到编译器需要的东西.当我从命令行运行时,此信息就在那里.

任何人都可以想到为什么Jenkins无法获得正确的PATH信息?

Jas*_*ger 14

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

  • 一个很好的应用程序是快速环境编辑器(在www.rapidee.com),你可以非常快速地发现这样的事情.... (3认同)

小智 5

我让Jenkins在Glassfish内部的服务器上运行,作为本地系统帐户运行,因为它已安装,通过使用此博客文章的派生,我能够通过在"系统配置"中设置属性变量来使其工作詹金斯的(詹金斯环境注入插件).(BDS,BDSCOMMONDIR,FrameworkDir,FrameworkSDKDir等...)

然后,Delphi获取适当路径的技巧是将命令行参数"Win32LibraryPath"发送到MSBuild.确保在Jenkins中使用此参数中的双引号转义,否则您将拔出头发.