【问题标题】:Running rsvars.bat before Teamcity build starts在 Teamcity 构建开始之前运行 rsvars.bat
【发布时间】:2012-02-20 08:44:39
【问题描述】:

我有一个使用 TeamCity 构建的 C++ Builder 2010 项目。我注意到一些奇怪的错误,在阅读了它们之后,我了解到我必须设置一些位于 rsvars.bat 中的变量。我希望构建脚本在执行实际构建之前执行 bat 文件以设置环境。我怎样才能最好地做到这一点?

我可以在文件的开头使用 <exec /> 命令还是有更好的方法?

【问题讨论】:

    标签: msbuild teamcity c++builder


    【解决方案1】:

    一种方法是在调用 rsvars.bat构建命令 的脚本中运行打包构建。这将使变量在构建执行期间仍然存在。

    但由于我使用 TeamCity,我喜欢它是一个真正的 msbuild 步骤,而不是包裹在其他东西中的 msbuild。我正在考虑让构建脚本在构建开始时将变量从 rsvars.bat 设置为 MachineUser ,然后在最后,虽然不好。

    我最后只是将配置添加到 TeamCity 中的 Build Agents 环境配置 并保持代理之间的安装路径相同。

    【讨论】:

    • 最后一个建议是最接近的......但如果每个构建代理的“路径”不同,您只需要在构建代理级别执行此操作。
    【解决方案2】:

    您可以创建一个新的构建步骤,然后指定一个自定义构建步骤顺序,这样新的构建步骤将是第一个。

    Configuring Build Steps

    【讨论】:

    • msbuild 脚本运行时,从 rsvars.bat 设置的环境变量似乎并非如此。有什么方法可以告诉他们在同一个会话中运行?
    • 真的我自己没试过,反正看起来像几分钟的解决方案所以请试试How to set envrionment variables in MSBuild file?
    • 每个构建步骤似乎都在一个单独的进程中运行,因此变量在第二个构建步骤之前不会存在。
    • 有趣的一点,感谢告知,如果您能找到解决方案,请告诉我们
    • 添加了我决定如何解决它。另一个注意事项是 msbuild 中的每个 Target 也在单独的进程中运行。这解释了为什么一个简单的 任务不起作用。您也许可以在每个目标中做一个,但这根本不是很好:)
    【解决方案3】:

    将它们添加为构建参数 -> 环境变量(在构建配置中),直接且通常有效。构建参数/环境变量将自动设置为运行作业的构建代理上的环境变量。

    然后您可以制作构建模板并重复使用它。

    假设所有构建代理上的“路径”都是相同的,通常是这种情况。如果不是您建议通过构建代理执行此操作。

    【讨论】:

      猜你喜欢
      • 2019-05-18
      • 1970-01-01
      • 2019-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      相关资源
      最近更新 更多