Hudson Perforce插件 - 如何在不重复触发构建的情况下自动更新版本

时间:2010-11-13 21:34:41

标签: version-control hudson maven perforce

我正在努力使用Hudson,Maven& amp; Perforce(用于触发每个构建的scm轮询)

其中一个要求是在每次成功构建后自动更新POM快照版本号。

使用Maven发布插件这是微不足道的,但是检查新版POM的行为会触发另一个版本 - 这种情况会无限期地持续下去。

有没有办法检查版本更新而不触发另一个版本?当scm民意调查决定重建时,似乎没有任何方法可以排除特定用户签入,特定更改列表或特定文件。

这似乎是一个基本要求 - 多年来一直使用Cruise Control / Ant / Perforce,

干杯,

标记

7 个答案:

答案 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更新和打包。这允许我们:

  • 创建RC和相应的标签,而无需启动花药构建
  • 允许我们在任何开发机器上调试构建的所有方面,而不仅仅是那些使用Hudson的机器。
  • 允许我们在过去的任何时刻准确地重新创建包裹,标签等的方式。

答案 5 :(得分:0)

我在编译的src中检查了类似的问题。我能够找到另一种选择,但我确实考虑了以下内容。

  1. 在hudson中指定要轮询的项目的子文件夹。即实际上没有哈德森检查你的项目,只是一个偶然的文件夹。

  2. 添加shell脚本以正确检查项目。

  3. 运行正常的脚本。
  4. 检查你的pom。这里的诀窍是被轮询的文件夹在这一点上已经改变了。
  5. 不理想,但有效。

答案 6 :(得分:0)

perforce插件已经有一段时间的轮询掩码了。它位于&#34; View Mask&#34;。

下的高级部分

基本上,您列出了要轮询以检查更改的文件子集。遗憾的是,排除文件并不容易,因此您必须创建一个文件规范列表,指定要排除的文件的所有内容。因此,如果版本包含在pom.xml中,我需要指定不包含它的文件和目录。

例如,如果您的目录结构如下所示:

./pom.xml
./lib/
./src/

您可以指定,

//depot/project/lib/...
//depot/project/src/...

作为视图掩码,并选中复选框以仅将其用于轮询。此功能有一些限制,例如无法使用&#39; - &#39;排除文件规范,但它现在仍然是一个可行的解决方案。