发布管理 - Maven、Bamboo 和 JIRA

Mat*_*att 5 maven-2 jira release-management bamboo maven-release-plugin

我想找到使用 Maven 2、Bamboo 3.1 和 JIRA 4.3 管理发布的最佳方法。我尝试过很多事情,但由于错误或功能缺失,我总是陷入死胡同。

我的最终目标是让版本来自 JIRA,让 Bamboo 获取这些版本并使用 Maven 从中构建工件,然后将这些工件部署到存储库(在我们的例子中为 Nexus)。

以下是我尝试过的方法:

1)在项目版本的所有pom中使用占位符:

父 pom

<project ...>
  <groupId>group</groupId>
  <artifactId>parent</artifactId>
  <version>${ci.version}</version>
  ...
  <modules>...</modules>
</project>
Run Code Online (Sandbox Code Playgroud)

儿童绒球

<project ...>
  <parent>
    <groupId>group</groupId>
    <artifactId>parent</artifactId>
    <version>${ci.version}</version>
  </parent>
  <artifactId>child</artifactId>
  ...
</project>
Run Code Online (Sandbox Code Playgroud)

如果您从项目根 pom 启动构建并-Dci.version=<my-version>在命令行上指定,则会进行构建。将此与Bamboo 发布管理插件结合起来,我可以构建和部署模块的版本并根据需要进行发布。

这种方法的问题是,Maven 在部署或安装时不会替换 poms 中的占位符变量,这意味着存储库中的 poms 具有标记,而${ci.version}我确实希望它们具有具体版本。由于占位符,这意味着没有人可以使用我部署的模块。参见MNG-2971

2)在pom中使用具体的SNAPSHOT版本,并配置bamboo以使用Bamboo发布管理插件执行Maven发布插件

不幸的是,Maven Release Plugin 需要版本来递增,bamboo 插件允许您获取要构建的当前版本的名称,但不能获取下一个版本的名称。如果没有此信息,使用 Maven 发布插件会将版本增加到不受 JIRA 管理的版本。为了使这个选项起作用,我要么需要可用的下一个版本,要么能够在 Bamboo 发布管理插件完成它的事情后运行一个计划(第二个修复也会给提交日志添加额外的混乱,因为你会获得一份用于自动增量的提交和一份用于正确增量的提交)。

2.b) 与 2) 相同,但您必须在通过计划配置界面进行任何发布构建之前指定 Bamboo 中的下一个版本,将该值手动设置为计划应处理的下一个 JIRA 版本。这解决了 2) 的问题,但增加了额外的手动步骤。

3) 手动执行操作,可能使用 Maven Release Plugin。完全忽略 Bamboo 中的所有发布功能,并通过调用 Maven Release Plugin 目标在需要时更改版本来手动管理命令行上的发布。发生这种情况时,JIRA 版本也需要手动发布。我们还需要配置一个bamboo构建来运行和测试发布插件为非SNAPSHOT版本创建的标签。

这个选项涉及太多的过程,肯定会出错。

我不是唯一一个尝试使用这些技术实现自动化发布的人,任何人都可以提供帮助。

谢谢

Fra*_*ens 0

马特,

你必须在你的目标中指定 -Dci.version={bamboo.custom.brmp.name} 当我寻找完全相同的信息时,我偶然发现了你的问题,但对于 JIRA 4.4 和 Bamboo 3.3,发布管理插件已被 JIRA Bamboo 插件替换/升级...

希望这可以帮助,

弗朗西斯