TFS构建代理更新

时间:2018-06-06 22:41:54

标签: tfs msbuild

我的问题可能听起来微不足道,但经过几天的研究后我无法得出任何结论。 应该多久更新一次在生产构建代理上构建工具。

一些细节可以理解我为什么会遇到这种困境。 一方面,我希望尽可能保持生产构建环境的稳定性。 目前使用TFS服务器2017,构建代理使用作为Visual Studio安装(VS2017 - 15.0.26228.0)的一部分的msbuild。我们构建C ++非托管应用程序。 最近正在追逐一个问题,我们的应用程序将无缘无故地长时间停留(忙7-8分钟,然后继续)。在尝试调试问题时,我从相同的源创建了新的可执行文件,但使用了不同的系统来构建它(它有VS2017 - 15.5.27130.2036)。它是由视觉工作室构建的。我注意到exe的大小不同,当然它没有冻结的问题。检查发行说明没有帮助,我没有看到任何可以解释生成的二进制文件的差异。 我不得不说,我们的代码有点复杂,使用了第三部分库的数量,在内存中创建了许多复杂的结构。 导致冻结的代码区域与重新初始化大量对象有关,重新创建了许多复杂结构的向量...

无论如何,问题在于行业如何处理生产环境中构建工具的更新。任何想法都将不胜感激。

2 个答案:

答案 0 :(得分:0)

有很多方法可以维护构建环境,所以请您认为获得行业标准方法非常困难。 我已决定使用虚拟机映像和容器来提供稳定,可重复的环境。

系统中心和容器注册表用于存储工件,我每晚在10个构建服务器上铺设以恢复VM映像,从而确保每天都有相同的工具链。

对于升级,使用新工具创建新图像,然后在将其作为默认图像之前进行单独测试。如果工具链支持并行安装,如MSBuild,Typescript等,那么破坏某些东西的风险很低,因为这些工具的隔离非常好。我还发现项目文件是否针对特定的工具链而不是自动浮动到最新版本,那么你的生活将会更加愉快。

有些工具在这方面不太出色,往往会污染环境或限制您使用该工具的单个版本。为此我尽可能地修理它们的容器。如果这不可能,那么这些工具会获得一个新图像,以及一组专用于该工具的新CI框。

一般情况下,我订阅了一个用于更新的拉模型,其中软件是手动更新的。这对于为全球的许多开发人员提供服务至关重要,而且由于自我更新,CI环境根本不会出现问题。

答案 1 :(得分:0)

每个代理都有一组功能,可以指示它可以执行的操作。功能是名称 - 值对,可以由代理软件自动发现,在这种情况下称为系统功能,或者您定义的名称 - 值对,在这种情况下,它们被称为用户功能< /强>

您可以浏览代理的系统功能,并通过导航到代理程序池集线器并选择所需代理的功能标签来管理其用户功能:{ {1}}

  

如果您愿意,这些功能不会被构建代理更新   更新它们,您必须在构建代理上手动更新它们   机。在代理上安装新软件后,必须重新启动   新能力出现的代理人。