Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TFS生成代理更新_Tfs_Msbuild - Fatal编程技术网

TFS生成代理更新

TFS生成代理更新,tfs,msbuild,Tfs,Msbuild,我的问题可能听起来很琐碎,但经过几天的研究,我还是没能得出任何结论。 在生产构建代理上更新构建工具的频率 一些细节来理解我为什么会有这样的困境。 一方面,我希望保持生产构建环境尽可能稳定。 当前使用TFS server 2017,生成代理使用作为visual studio安装(VS2017-15.0.26228.0)一部分的msbuild。我们构建C++的非托管应用程序。 最近,我们正在关注一个问题,我们的应用程序会无缘无故地被卡住很长时间(忙了7-8分钟,然后继续)。在试图调试这个问题时,我从

我的问题可能听起来很琐碎,但经过几天的研究,我还是没能得出任何结论。 在生产构建代理上更新构建工具的频率

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


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

维护构建环境的方法太多了,因此您会发现获得行业标准的方法非常困难。 我已经决定使用虚拟机映像和容器来提供稳定、可重复的环境

System Center和容器注册表用于存储工件,我每晚在10多个构建服务器上进行铺垫,以恢复VM映像,从而确保每天都有相同的工具链

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

有些工具在这方面还不够出色,往往会污染环境,或者将您限制在单一版本的工具上。为此,如果可能的话,我会修复它们。如果这是不可能的,那么这些工具将获得一个新的图像,以及一组专用于该工具的新CI框


一般来说,我订阅一个pull模型进行更新,其中软件是手动更新的。这在为全球各地的许多开发人员提供服务时至关重要,CI环境不会因为自我更新而变得脆弱。

每个代理都有一套功能来指示它可以做什么。功能是由代理软件自动发现的名称-值对,在这种情况下称为系统功能,或者是您定义的名称-值对,在这种情况下称为用户功能

通过导航到代理池中心并选择所需代理的功能选项卡,您可以查看代理的系统功能,并管理其用户功能:
http://TFS2017:8080/tfs/DefaultCollection/_admin/_AgentPool

如果需要,这些功能不会由构建代理更新 更新它们,您必须在构建代理上手动更新它们 机器在代理上安装新软件后,必须重新启动 代理将显示新功能