Teamcity 未加载环境变量 - Fortify 自动化

Teamcity not loading environment variables - Fortify automation

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

更新:

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

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

当您使用系统(控制面板)高级设置设置 PATH 变量时,有两个面板,一个用于用户,一个用于系统。您可以在此处检查 System 变量以确保它们是正确的。

我通常会做的是创建一个新密钥,比如 FORTIFY_PATH 并将 %FORTIFY_PATH% 添加到 System PATH 变量。然后重新启动您的机器。除非您这样做,否则路径不会正确更新。

接下来,使用 PSExec 登录系统帐户:https://superuser.com/a/596395 并尝试从该命令提示符 运行 您的工具以验证它们是否在构建代理的环境中工作。在登录 System 帐户并提供我的 SVN 密码之前,我曾经无法上传 SVN 脚本。一些设置存储在与用户帐户不同的 %APPDATA% 中。

如果您无法从 System 命令提示符获得 Fortify 到 运行,那么您可能应该将构建代理重新安装到您的用户帐户。或者将 Fortify 安装到系统帐户(如果可能)。

配置 TeamCity 构建代理时,通过转至 Agents->Agent->Agent Parameters 或服务器上的 /agentDetails.html?id=1&tab=agentParameters&kind=env 路径检查代理系统和环境变量。

更改参数后,重启代理或重启代理机器。