我在 Vista 上运行 hudson 并为 C++ 解决方案(VS 2008)调用 MSBuild。
我一直无法找到导出现有用户或系统环境变量的方法。
我可以通过 hudson 手动设置环境变量,但我不想这样做——我想使用已经设置的现有变量。有没有办法做到这一点?
本质上,我希望能够从环境变量列表中进行选择,并告诉 hudson 将它们映射/导出到它产生的进程/工作空间。
Hudson 作为服务运行。
我在 Vista 上运行 hudson 并为 C++ 解决方案(VS 2008)调用 MSBuild。
我一直无法找到导出现有用户或系统环境变量的方法。
我可以通过 hudson 手动设置环境变量,但我不想这样做——我想使用已经设置的现有变量。有没有办法做到这一点?
本质上,我希望能够从环境变量列表中进行选择,并告诉 hudson 将它们映射/导出到它产生的进程/工作空间。
Hudson 作为服务运行。
您可以尝试使用msbuild插件来避免整个环境设置问题。您只需将插件指向 msbuild 的位置,一切都可以从那里开始。
从这里获取你需要的东西:
%comspec% /k ""h:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" x86
我刚刚通过下载最新版本的 Hudson (1.316) 进行了快速测试,并创建了一个简单地运行“set”的作业(如果您不熟悉这一点,在控制台中运行 set 会列出所有环境变量当前范围)。
这是控制台输出,这些是所有环境变量 - 用户和系统,以及 Hudson 自己定义的变量,以使 Hudson 元信息可用于作业:
Started by user anonymous
[workspace] $ cmd /c call D:\Temp\hudson5023210513071219278.bat
C:\Documents and Settings\jack\.hudson\jobs\Environment Variable Test\workspace>set
ALLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=C:\Documents and Settings\jack\Application Data
BUILD_ID=2009-07-19_22-59-42
BUILD_NUMBER=1
BUILD_TAG=hudson-Environment Variable Test-1
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=BEEBLEBROX
ComSpec=C:\WINNT\system32\cmd.exe
EXECUTOR_NUMBER=0
HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\jack
HUDSON_COOKIE=a0bc798a-20ab-40bc-aad6-f4a331567999
HUDSON_HOME=C:\Documents and Settings\jack\.hudson
JAVA_HOME=c:\program files\java\jdk1.6.0
JOB_NAME=Environment Variable Test
LOGONSERVER=\\BEEBLEBROX
NUMBER_OF_PROCESSORS=1
OS=Windows_NT
Os2LibPath=C:\WINNT\system32\os2\dll;...blah...blah...blah...
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 15 Model 15 Stepping 0, AuthenticAMD
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=0f00
ProgramFiles=C:\Program Files
PROMPT=$P$G
QTJAVA=C:\Program Files\Java\jre1.6.0\lib\ext\QTJava.zip
SystemDrive=C:
SystemRoot=C:\WINNT
TEMP=D:\Temp
TMP=D:\Temp
USERDOMAIN=BEEBLEBROX
USERNAME=jack
USERPROFILE=C:\Documents and Settings\jack
windir=C:\WINNT
WORKSPACE=C:\Documents and Settings\jack\.hudson\jobs\Environment Variable Test\workspace
C:\Documents and Settings\jack\.hudson\jobs\Environment Variable Test\workspace>exit 0
Finished: SUCCESS
我怀疑您的变量根本没有在 Hudson 流程所有者的环境中定义(或类似的东西,我们需要有关您的 Hudson 设置的更多信息才能真正了解)。
编辑:另一个注意事项,您可以查看 /systemInfo 以查看 Hudson 可用的所有系统属性和环境变量。请记住,当 Hudson 生成一个新进程来工作时,所有环境变量都应该可供子进程使用,除非 Hudson 首先明确删除它们(我相信这更像是操作系统的特性而不是 Java)。因此,除非您看到任何详细说明删除某些环境变量的文档(如果是这样,我相信开发人员会有这样做的理由),我首先会检查这些变量是否对 Hudson 可用.
我遇到了同样的问题。我正在使用 MSBuild 插件,我的 msbuild 项目文件是:
<?xml version="1.0" encoding="Windows-1252"?>
<Project xmlns=" http://schemas.microsoft.com/developer/msbuild/2003"> ;
<Target Name="FooCompilation">
<Message Text="INCLUDE: $(INCLUDE)"/>
<Message Text="LIB: $(LIB)"/>
<Message Text="PATH: $(Path)"/>
<MSBuild Projects="Proj1.vcproj" Properties="Configuration=Release" />
</Target>
</Project>
该文件在控制台中工作,在 hudson 输出中:
目标 FooCompilation:包括:“C:\Program Files\Microsoft SDKs\Windows\v6.1\Include” LIB:“C:\Program Files\Microsoft SDKs\Windows\v6.1\Lib” 路径:“C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin";C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;c:\Program Files\Microsoft SQL Server\90\Tools\binn \ __________________________________________________
但是我的构建失败了,因为 INCLUDE 路径没有通过 throw MSBuild Task ...
构建文件和批处理文件是两个独立的东西,批处理文件会吃掉构建过程中生成的所有错误,与将输入发送到批处理文件时的其他方式相同。
蒂姆,
Hudson 将许多参数导出为环境变量,例如:
BUILD_ID=2012-03-19_12-43-52
BUILD_NUMBER=74
HUDSON_HOME=C:\Documents and Settings\john\.hudson
从 Hudson v2.0.1 开始,您还拥有启动构建的 Hudson-User:
HUDSON_USER=dan
环境变量的完整列表在这里:Hudson Set Environment Variables
如果您希望将其他参数传递给您的工作,最好的方法是使用 Hudson 的Parameterized Build
请注意,对于 Windows,您应该使用约定“ %MY_PARAM% ”(而不是在 Unix 上使用“ $MY_PARAM ”)。