我目前已设置 Teamcity 来运行批处理文件,此批处理文件执行强化扫描。似乎环境变量'PATH'在一次尝试中正确加载并开始执行扫描。在下一次构建尝试时,批处理文件无法找到其中一个可执行文件(sourceanalyzer.exe
)。在查看用户定义的参数时,似乎加载了与先前构建尝试不同的环境变量。看起来系统环境变量会在成功尝试时加载,然后在失败尝试时加载用户环境变量。有没有办法在代理中永久设置环境变量 PATH 以仅加载系统环境变量?
更新:
我尝试了几件事,包括传入一个 Fortify 环境变量,它允许TeamCity开始运行扫描。然而,看起来我在vs2015的Fortify插件中遇到了另一个问题。新错误表明它无法找到插件。我认为这是因为路径是硬编码的?看到TeamCity不使用System环境变量,我必须将它们传递给TeamCity才能找到这些目录。有没有更简单的方法来使用批处理文件来加载系统环境变量以避免硬编码路径?批处理文件中的setlocal
是否会帮助加载这些系统环境变量,因此我可以在不创建环境变量或硬编码路径的情况下调用sourceanalyzer
?
答案 0 :(得分:3)
IIRC,Teamcity会询问您是否要在System
帐户或用户帐户上安装构建代理。默认情况下,它选择System
帐户,只要您没有运行任何GUI应用程序,您就不会注意到差异......直到发生类似情况。如果Fortify
是基于GUI的,则在用户帐户上重新安装构建代理并忽略以下内容。否则...
使用系统(控制面板)高级设置设置PATH
变量时,有两个窗格,一个用于用户,另一个用于系统。在这里,您可以检查System
变量以确保它们是正确的。
我通常会创建一个新密钥,比如说FORTIFY_PATH
并将%FORTIFY_PATH%
添加到System
PATH
变量之前。然后重新启动你的机器。在您这样做之前,路径不会正确更新。
接下来,使用PSExec:https://superuser.com/a/596395登录系统帐户,并尝试从该命令提示符运行工具,以验证它们是否在构建代理的环境中工作。我曾经无法上传SVN脚本,直到我登录System
帐户并提供了我的SVN密码。某些设置存储在%APPDATA%中,这与用户帐户不同。
如果您无法从Fortify
命令提示符运行System
,那么您应该将构建代理重新安装到您的用户帐户。或者将Fortify安装到系统帐户(如果可能)。
配置TeamCity构建代理时,请检查代理系统和环境变量转到服务器上的Agents->Agent->Agent Parameters
或/agentDetails.html?id=1&tab=agentParameters&kind=env
路径。
更改参数后,重新启动代理或重新启动代理的计算机。