我正在努力使用Hudson,Maven& amp; Perforce(用于触发每个构建的scm轮询)
其中一个要求是在每次成功构建后自动更新POM快照版本号。
使用Maven发布插件这是微不足道的,但是检查新版POM的行为会触发另一个版本 - 这种情况会无限期地持续下去。
有没有办法检查版本更新而不触发另一个版本?当scm民意调查决定重建时,似乎没有任何方法可以排除特定用户签入,特定更改列表或特定文件。
这似乎是一个基本要求 - 多年来一直使用Cruise Control / Ant / Perforce,
干杯,
标记
答案 0 :(得分:1)
我一直在考虑迁移到Hudson,但无法从scm民意调查中排除特定文件将是一个交易破坏者。您是否也在Hudson邮件列表上提出这个问题?
用户<at>
hudson <dot>
dev <dot>
java <dot>
net
我通过阅读文档看到的唯一解决方法似乎是触发基于p4触发器的构建,然后您可以以编程方式执行任何您想要的操作,但这似乎不是一个非常简单的方法。
答案 1 :(得分:1)
我不相信有任何方法可以在轮询时配置Hudson省略Perforce工作区的一部分。您可以通过设置两个不同的工作区来获得更好的运气 - 一个用于使用默认POM进行构建测试,另一个用于使用自动更新版本POM进行的版本。这两个工作区可能仅在这一个文件上有所不同,修改版本POM不会触发新版本。
查看如何在P4Guide。
的工作区中执行单个文件映射答案 2 :(得分:0)
可以在提交后更新更改列表的描述,因此,如果您构建到某个更改列表编号,则可以更新该更改列表的描述以包含您的内部版本号。这不应该触发新的构建。
答案 3 :(得分:0)
什么是“POM”?
您可以让Hudson“在Perforce中创建或更新标签”(请参阅项目底部附近的配置。)您可以将它与Hudson提供的BUILD_NUMBER环境变量一起使用,为您提供唯一的构建号和标记的P4标签说构建。
答案 4 :(得分:0)
我已经通过签入的构建代码完成了所有标记,ChangeLog更新和打包。这允许我们:
答案 5 :(得分:0)
我在编译的src中检查了类似的问题。我能够找到另一种选择,但我确实考虑了以下内容。
在hudson中指定要轮询的项目的子文件夹。即实际上没有哈德森检查你的项目,只是一个偶然的文件夹。
添加shell脚本以正确检查项目。
不理想,但有效。
答案 6 :(得分:0)
perforce插件已经有一段时间的轮询掩码了。它位于&#34; View Mask&#34;。
下的高级部分基本上,您列出了要轮询以检查更改的文件子集。遗憾的是,排除文件并不容易,因此您必须创建一个文件规范列表,指定要排除的文件的所有内容。因此,如果版本包含在pom.xml中,我需要指定不包含它的文件和目录。
例如,如果您的目录结构如下所示:
./pom.xml
./lib/
./src/
您可以指定,
//depot/project/lib/...
//depot/project/src/...
作为视图掩码,并选中复选框以仅将其用于轮询。此功能有一些限制,例如无法使用&#39; - &#39;排除文件规范,但它现在仍然是一个可行的解决方案。