我有一个Jenkins构建服务器,并希望在符号服务器上使用构建生成PDB。
理想情况下,PDB文件将保留,而生成它们的构建仍然存档,因为第三方库,稳定版本,夜间构建等有不同的计划,我们希望保留调试信息至少对于那些我们仍然可以安装的版本。
我目前的思路是
就会启动
从所有作业导入所有PDB工件
同样,有没有办法从所有工作中收集PDB,而不必明确配置我们想要收集的工作列表,以避免这种情况变得不一致?
找出哪些是新的
可以通过某种方式从Jenkins查询(更改选项卡列出来自引用项目的已修改工件,是否有可能跳过复制未更改的工件,和/或获取有关哪些工件更改为构建步骤的信息,因此我们可以避免不必要的工作吗?
将这些提交给符号服务器
检查这些是否仍然是构建中的工件
可以使用伪影指纹完成吗?我可以直接用MD5求和Jenkins查询吗?是否从Jenkins的数据库中删除了指纹条目,因此我可以发现生成该文件的构建已过期了吗?
过期的不是。
如果有更好的方法,我会接受替代策略。
答案 0 :(得分:1)
每当另一个工作完成时启动的工作
我会将PDB存储为原始作业的一部分,而不是新工作。 存储PDB不应该花太长时间。
从所有作业导入所有PDB工件
我不认为有一个插件可以管理系统明智的PDB收集。见之前:立即收集PDB。
找出哪些是新的
PDB在每个构建中都会有所不同,即使源代码相同也是如此。 DLL和PDB包含时间戳信息。
再次:立即收集PDB,您就会知道它们是新的。无需日期检查。
除此之外,如果您尝试再次向符号服务器提交相同的PDB,则它要么拒绝它,要么用相同的版本替换它。在这两种情况下都无需担心。
将这些提交给符号服务器
是
在符号服务器中查询现有PDB
这适用于新工作,例如:每晚清理一次。
检查这些是否仍然是构建
中的工件
请注意,某人仍在使用已删除的每晚版本的本地副本。
除此之外,PDB还有一个时间戳,构建也有时间戳。也许那些差异只有几分钟,所以也许你需要自己实现一些东西。 debugdir可能会有所帮助。
请确保您不会意外删除正式版本。如果您事先知道您正在构建正式版本,则可以例如设置一个"所有符号"服务器和官方符号"服务器
过期这些不是。
也许。请检查一下是否值得付出全部努力。磁盘空间很便宜,你可能不需要超快磁盘。也许你可以保持所有版本没有任何问题。