gpt4 book ai didi

version-control - 最佳的构建过程解决方案来管理构建版本

转载 作者:行者123 更新时间:2023-12-03 23:36:50 24 4
gpt4 key购买 nike

我用几个独立的应用程序运行一个相当复杂的项目。但是,它们使用了两个共享组件。所以我有一个看起来像下面的源代码树。


我的项目


应用A
共享的1
共享的2
应用B
应用C



所有应用程序都有自己的MSBuild脚本,该脚本可生成项目及其所需的所有共享资源。我还在CruiseControl控制的持续集成构建服务器上运行了这些构建。

部署应用程序后,会将它们部署在多台服务器上以分配负载。这意味着跟踪每个不同服务器上部署的构建/修订版本非常重要(我们需要在DLL版本中拥有当前版本,例如“ 1.0.0.68”)。

同样重要的是,能够重新创建一个修订版本/构建版本,以便在某些事情未能按预期进行时回滚(是的,发生了……)。今天,我们正在使用SourceSafe进行源代码控制,但是如果我们能提出充分的理由(SS到目前为止,对我们来说实际上还可以),则有可能改变。

我们尝试遵循的另一个原则是,只有我们进一步部署的集成服务器才能构建和测试这些代码。

“ CrusieControl构建标签”解决方案

我们对于解决上述问题有一些想法。首先是让持续集成服务器构建并在本地部署项目并对其进行测试(现在可以这样做)。您可能知道CruiseControl成功构建会生成一个构建标签,而我想我们可以以某种方式使用它来设置可执行文件的DLL版本(因此,构建标签35会创建一个类似“ 1.0.0.35”的DLL)?想法也是使用此构建标签来标记整个源代码树。然后,我们可能可以通过该标签签出并稍后重新创建构建。

标记整个树的原因是不仅要包括实际的应用程序代码(位于源树中的一个位置),还包括所有共享项(位于树中不同位置)。因此,成功构建“ Application A”将使用标签“ ApplicationA35”将标签标记为整棵树。

但是,在尝试重新创建此版本并在部署之前设置DLL版本时可能会出现问题,因为我们将无法再使用CruiseControl生成的版本标签。如果所有CrusieControl构建标签在所有项目中都是唯一的,我们可以仅使用数字进行标记,但事实并非如此(应用程序A和B可以同时位于构建35上),因此我们必须在标签。因此,SourceSafe标签为“ Application35”。一旦构建了构建35,如何重新创建构建34并将DLL版本号设置为1.0.0.34?

“修订号”解决方案

有人告诉我,例如Subversion在每次签入时都会为整个源代码树创建一个修订版号-是这种情况吗? SourceSafe有类似的东西吗?如果正确的话,那就是在更新时获取该修订号并在CruiseControl服务器上构建。然后可以使用修订号来设置DLL版本号(例如,设置为“ 1.0.0.5678”)。我想如果需要的话,我们可以为Subversion得到这个特定的修订版,然后该版本将包括该应用程序和所有共享项,以便能够从过去重新创建特定的版本。这项工作是否可行,是否也可以使用SourceSafe来实现?

总结

因此,两个主要要求是:


能够跟踪内部版本号和已部署DLL的内部版本号/修订号。
能够重建以前的修订/版本,在该可执行文件上设置旧的构建/版本号(符合要求1)。


那么您将如何解决呢?您首选的方法是什么?如何解决(或者您有完全不同的想法?)? **请提供详细答案。 **

额外的问题修订号和内部版本号有什么区别?何时真正需要两者?

最佳答案

您的方案在VSS中是合理且可实现的(尽管我建议您考虑使用另一种方案,但VSS确实是过时的产品)。

对于您的“ CI”构建-您将执行版本控制,以查看具有“版本”任务的MSBuild Community Tasks Project。通常,您在源代码树中将有一个“ Version.txt”,并且在开发人员控制Major.Minor.Release.Revision数字时,MSBuild任务将增加“ Release”数字(这是我的客户想要的)。如果愿意,可以使用修订。

然后,您将具有“ FileUpdate”任务来编辑具有该版本的AssemblyInfo.cs文件,并且您的EXE和“ DLL”将具有所需的版本。

最后,VSSLabel任务将适当地标记所有文件。

对于“ Rebuild”构建-您将修改“ Get”以从该Label获取文件,显然不执行“ Version”任务(因为您正在选择要构建的版本),然后FileUpdate任务将使用该版本号。

奖励问题:

这些都是“您想如何使用它们”-我将使用内部版本号,以及内部版本号,这就是我要增加的内部版本号。如果您正在使用CI,则将有很多构建-绝大部分都不打算在任何地方进行部署。

主要和次要是不言而喻的-但修订版我一直用于“修补程序”指示器。我打算发布一个“ 1.3”版本,实际上是1.3.1234.0版本的产品。在1.4上工作时-我发现一个错误-需要1.3.2400.1的修补程序。然后当1.4准备好时-会说1.4.3500.0

关于version-control - 最佳的构建过程解决方案来管理构建版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com