VCS 中二进制引用的影响最小的解决方案
Least-impact solution to binary references in VCS
我们正在使用 TeamCity 2017.1,多年来一直非常高兴地使用它。很久以前,有人决定将所有第三方二进制文件放入 Subversion(我们选择的 VCS)中。
这工作得很好,但随着时间的推移,这个存储库变得相当大,再加上我们越来越擅长使用 TeamCity,我们现在有几十种构建配置,全部 使用第三方二进制文件。
我们的第三方文件夹名为 Department,大小约为 2.6 GB。因此,这还不错,但请记住,这个文件夹几乎被构建服务器上的每个项目!
使用
现在,我同意大家所说的我们应该使用 Nugets、网络共享等,这对新项目来说效果很好。然而,我们有很多历史,我们不能开始改变每一个解决方案和分支。
一位同事提出了一个想法,即如果我们创建了一个构建项目,实际上它除了用我们部门的东西更新单个文件夹外什么也没做。然后我们只需要找到一种方法来引用它,而不必更改我们所有的项目和解决方案。
我最初虽然是使用快照依赖项,然后创建一个符号 link 作为第一个构建步骤,并在最后一个步骤中删除它,以达到相同的相对水平。
但是有没有更好的办法呢?其他人做什么?
请记住,用 nugets 或其他东西替换不是一种选择。
让我按照你同事的想法改进一下。将有一个构建配置来监视 Subversion 存储库并将包复制到网络共享。该网络共享将由开发团队用作 nuget 存储库。将其依赖项从二进制引用转换为 nuget 引用的项目将享受更快的构建。当所有团队都将使用 nuget 存储库时,您可能会杀死该 Subversion。
我们正在使用 TeamCity 2017.1,多年来一直非常高兴地使用它。很久以前,有人决定将所有第三方二进制文件放入 Subversion(我们选择的 VCS)中。
这工作得很好,但随着时间的推移,这个存储库变得相当大,再加上我们越来越擅长使用 TeamCity,我们现在有几十种构建配置,全部 使用第三方二进制文件。
我们的第三方文件夹名为 Department,大小约为 2.6 GB。因此,这还不错,但请记住,这个文件夹几乎被构建服务器上的每个项目!
使用现在,我同意大家所说的我们应该使用 Nugets、网络共享等,这对新项目来说效果很好。然而,我们有很多历史,我们不能开始改变每一个解决方案和分支。
一位同事提出了一个想法,即如果我们创建了一个构建项目,实际上它除了用我们部门的东西更新单个文件夹外什么也没做。然后我们只需要找到一种方法来引用它,而不必更改我们所有的项目和解决方案。
我最初虽然是使用快照依赖项,然后创建一个符号 link 作为第一个构建步骤,并在最后一个步骤中删除它,以达到相同的相对水平。
但是有没有更好的办法呢?其他人做什么?
请记住,用 nugets 或其他东西替换不是一种选择。
让我按照你同事的想法改进一下。将有一个构建配置来监视 Subversion 存储库并将包复制到网络共享。该网络共享将由开发团队用作 nuget 存储库。将其依赖项从二进制引用转换为 nuget 引用的项目将享受更快的构建。当所有团队都将使用 nuget 存储库时,您可能会杀死该 Subversion。