为夜间构建维护Symbol Store的策略&发布版本

时间:2011-08-10 22:10:51

标签: symstore

我正在尝试为我的组织及其各种产品设置中央符号服务器。每个产品都有每晚构建,以及“一次性”测试版,RC和发布版本。

我的目标是保留大约一个月的夜间构建符号,因为我们在这里做了很多“dogfooding”,所以人们使用内部构建,我们想要轻松调试我们从内部winqual获得的文件如果可能的话。

我还需要能够永久保留所有beta,RC和发布构建符号。

经过大量研究后,我认为这里最好的方法是拥有两个符号服务器:一个用于夜间构建(其中包含之前的~30个构建版本),另一个用于永久存储beta,RC和发布符号。我会使用产品和版本标记将构建脚本添加到符号存储中以记录产品和内部版本号。成功构建之后,脚本将使用符号服务器中的history.txt来标识未删除的最旧构建,然后将其从symstore中删除。

对于贝塔,RC和发行版本的“一次性”构建,它们将由构建和发现版本识别。安装人员一旦创建,并添加到第二个符号服务器(永久存储)。

所以我有几个问题:这看起来是否合理?必须有一种更简单的方法,大多数拥有符号服务器的组织都不需要解决这个问题吗?

其次,如果我要采用这种方法,是否有一种简单的方法来识别服务器上注册的最早的已知符号集?我想过使用最后修改日期,但是history.txt似乎是最合适的,但脚本解析可能容易出错。我希望可以添加一个带有产品和符号的符号。版本信息,以及删除产品和&版本信息。

提前感谢您的帮助。我很乐意回答任何人可能提出的任何问题,或提供任何澄清。

2 个答案:

答案 0 :(得分:5)

我认为两个独立的符号商店确实是你最好的选择。为了管理您每晚构建的商店,我建议您查看AgeStore:http://msdn.microsoft.com/en-us/library/ff560046(v=vs.85).aspx

答案 1 :(得分:2)

我在Wise Script中编写了一个小部件,该小部件针对执行以下操作的每个构建运行。

假设我们的版本控制是1.0.1.0

1。)1.0.1.0到1.0.6.0符号被添加到商店(5次运行)

2。)每次构建时,都会解析符号存储历史文件...

3.)当构建1.0.7.0并添加符号时,将从符号存储中删除1.0.1.0符号。

我基本上解析了版本号,如果第三个位置比当前小于5,我解析事务ID并运行symstore.exe del / i%TRANS_ID%

将每日/ CI构建的符号修剪为仅最后5个构建符号。

任何值得注意的符号,例如发布,修补程序,补丁......我只是更改产品名称并手动添加符号......这样,我只修剪日报。

如果您愿意,我可以在此处剪切/粘贴代码作为SMS安装程序代码(与Wise相同)。我还写了一个类似的小部件,让我的本地存档5深入。这样,我不会浪费我的本地存档用于CI构建的空间。我使用两者,但你可以使用其中之一。两者都使用简单的.INI文件进行运行时导航。这样,我可以将它们放在我的Jenkins / Jobs /文件夹中,只需编辑每个的.INI文件。它们的重量非常轻,因为.EXE对于archive_prunerator只有161K,对于symstore_widget只有161,还有一个4或5行.INI文件。

AJ