【问题标题】:Teamcity not loading environment variables - Fortify automationTeamcity 未加载环境变量 - 强化自动化
【发布时间】:2017-05-23 21:05:04
【问题描述】:

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

更新:

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

【问题讨论】:

  • 您确定构建在同一个代理上运行吗?这对我来说是代理差异的味道。
  • @sferencik 是的,它们在同一个代理上运行。

标签: batch-file teamcity fortify


【解决方案1】:

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路径检查代理系统和环境变量。

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

【讨论】:

  • 感谢您的回复!正确的环境变量列在System 帐户中。我还能够让 sourceanalyzer 使用 PSExec 运行,但看起来 %APPDATA% 指向错误的强化和插件版本。有没有办法更新系统的 %APPDATA% 以指向新版本?
  • 请勿%APPDATA% 更改为指向其他地方。我的意思是,除非你真的不再喜欢那台机器了。看看您是否可以将 Fortify 安装到系统帐户或将构建代理重新安装到您的用户帐户。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-17
  • 2019-10-31
  • 1970-01-01
  • 2020-04-21
  • 2013-05-27
  • 2019-07-24
  • 1970-01-01
相关资源
最近更新 更多