我在本地使用 TFS 2013。我在构建机器上配置了四个构建代理。几个构建定义编译 ASP .NET 网站。我配置了 msbuild 参数以将 IIS 应用程序部署到集成服务器,该服务器位于 Rackspace 中。
默认情况下,webdeploy 通过比较文件日期进行差异部署。在我的情况下,这是一个很大的优势,因为将文件从我们的网络复制到 Rackspace 需要相当长的时间。现在,为了保留文件日期,构建代理必须编译相同的基本源代码集。在每次构建时,只有差异源代码会产生一个新的 DLL,从而最大限度地减少部署的文件数量。
所有这些都可以正常工作,但需要注意的是:必须将给定的构建定义分配给构建代理(通过代理名称或标签)。问题是当分配给同一代理的所有构建都排队时,我会产生很多意外情况。他们排队等候,直到之前的构建完成。
在理想的世界中,任何代理都应该能够处理任何构建,但是无论代理如何,正在编译的源代码都必须相同。
我尝试将所有代理的工作文件夹更改为指向同一位置,但由于两个代理无法映射到同一文件夹,因此出现错误。我猜每个代理都有一个工作区。
有任何想法吗?