Batch file Teamcity未加载环境变量-加强自动化

Batch file Teamcity未加载环境变量-加强自动化,batch-file,teamcity,fortify,Batch File,Teamcity,Fortify,我目前已将Teamcity设置为运行批处理文件,该批处理文件执行强化扫描。环境变量“PATH”似乎已在一次尝试中正确加载并开始执行扫描。在下一次生成尝试中,批处理文件找不到一个可执行文件(sourceanalyzer.exe)。当查看用户定义的参数时,似乎加载了与先前构建尝试不同的环境变量。它看起来像是在成功尝试时加载了系统环境变量,然后在失败尝试时加载了用户环境变量。是否有办法在代理中永久设置环境变量PATH,以便仅加载系统环境变量 更新: 我尝试了几种方法,包括传入一个Fortify环境变量

我目前已将Teamcity设置为运行批处理文件,该批处理文件执行强化扫描。环境变量“PATH”似乎已在一次尝试中正确加载并开始执行扫描。在下一次生成尝试中,批处理文件找不到一个可执行文件(
sourceanalyzer.exe
)。当查看用户定义的参数时,似乎加载了与先前构建尝试不同的环境变量。它看起来像是在成功尝试时加载了系统环境变量,然后在失败尝试时加载了用户环境变量。是否有办法在代理中永久设置环境变量PATH,以便仅加载系统环境变量

更新:


我尝试了几种方法,包括传入一个Fortify环境变量,它允许TeamCity开始运行扫描。然而,看来我在Fortify的vs2015插件上遇到了另一个障碍。新的错误表明它找不到插件。我想这是因为路径是硬编码的?因为TeamCity不使用系统环境变量,所以我必须将它们传递给TeamCity才能找到这些目录。是否有更简单的方法使用批处理文件加载系统环境变量以避免硬编码路径?批处理文件中的
setlocal
是否有助于加载这些系统环境变量,这样我就可以调用
sourceanalyzer
,而不必创建环境变量或硬编码路径

IIRC,Teamcity将询问您是否要在
系统
帐户或用户帐户上安装构建代理。默认情况下,它会选择
系统
帐户,只要您没有运行任何GUI应用程序,您就不会注意到差异。。。直到这样的事情发生。如果
Fortify
是基于GUI的,则在用户帐户上重新安装构建代理并忽略以下内容。否则

使用系统(控制面板)高级设置设置
路径
变量时,有两个窗格,一个用于用户,一个用于系统。在这里,您可以检查
系统
变量,以确保它们是正确的

我通常要做的是创建一个新键,比如说
FORTIFY_PATH
并将
%FORTIFY_PATH%
前置到
系统
变量。然后重新启动你的机器。只有这样,才能正确更新路径

接下来,使用PSExec:登录到系统帐户,并尝试从该命令提示符运行工具,以验证它们是否在构建代理的环境中工作。我曾经很难上传一个SVN脚本,直到我登录
系统
帐户并提供我的SVN密码。某些设置存储在与用户帐户不同的%APPDATA%中

如果无法从
系统
命令提示符运行
Fortify
,则可能需要将生成代理重新安装到用户帐户。或将Fortify安装到系统帐户(如果可能)

在配置TeamCity build代理时,通过转到服务器上的
代理->代理->代理参数
,或
/agentDetails.html?id=1&tab=agentParameters&kind=env
路径,检查代理系统和环境变量


更改参数后,重新启动代理或重新启动代理的计算机。

您确定生成在同一代理上运行吗?这对我来说有一种代理差异的味道。@sferencik是的,它们在同一个代理上运行。谢谢您的回复!正确的环境变量列在
系统
帐户中。我还能够使用PSExec运行sourceanalyzer,但看起来%APPDATA%指向了错误的强化版本和插件版本。是否有方法更新%APPDATA%,使系统指向新版本?不要将
%APPDATA%
更改为指向其他地方。我是说,除非你真的不喜欢那台机器了。查看是否可以将Fortify安装到系统帐户或将生成代理重新安装到用户帐户。