4

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

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

我还需要能够永久保留所有 beta、RC 和发布版本符号。

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

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

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

其次,如果我要继续使用这种方法,是否有一种万无一失的方法来识别在服务器上注册的最古老的已知符号集?我曾考虑过使用上次修改日期,但 history.txt 似乎最合适,但脚本解析可能容易出错。我希望可以只添加一个带有产品和版本信息的符号,以及删除一个带有产品和版本信息的符号。

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

4

2 回答 2

5

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

于 2011-08-17T16:59:43.020 回答
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 文件。它们的重量非常轻,因为archive_prunerator 的.EXE 只有161K,symstore_widget 的.EXE 只有161,再加上4 或5 行的.INI 文件。

阿杰

于 2013-02-07T21:58:11.730 回答