2011-10-22 121 views
0

我想要做一个与Maven发布插件假定的意思略有不同的“发布”。通过Maven,SVN和Hudson(jenkins)发布

我有一个web项目(我想“释放”),这取决于各种其他项目,也是由相同的哈德森(而不是模块虽然)构建。

“释放”应做到以下几点:通过哈德森

  • 构建所有dependend^dependend项目
  • 构建Web项目(加上递增的版本号来体现)
  • 部署Web项目到tomcat(这已经在常规版本中)
  • 创建一个新标签,其中包含版本号在svn位置x
  • 复制所有当前svn/head项目的源头,狡猾的建设新的标签
  • 改变所有参与项目的所有POM版本为$ {VERSIONNUMBER} .0.1-快照,SVN /头

我想这是每个人都必须做,只是很辛苦通过谷歌找到实际的解决方案。

+0

你最后的假设是一个有趣的假设。你为什么这么认为? – bmargulies

回答

0

如果您有特定的需求,那么我认为最简单的方法是使用脚本。 几种脚本语言可以用作哈德森的构建步骤。

0

听起来很像我们的要求。我们还没有完全在詹金斯那里完成。

所以,我们有以下步骤:

  1. 宣布代码冻结,以使所有团队在树干“正确”的代码,并有相互“同步”的代码。

  2. 我们运行一个(自家种植的)java工具,检查代码是否创建发布和发布标签的分支。从下一次迭代开始,它还将使用新的快照版本更新主干。该工具具有自己的配置文件,以便知道版本号是/将会是什么以及哪些项目(以及它们位于何处)需要更新。

  3. 我们运行“内部发布”工作,与我们的所有内部企业回购(它只知道第三方和外部回购)几乎没有关系。这项工作清除了当地的Maven回购(它有自己的回购,没有其他工作使用)。我下载了我们所有项目的特定子文件夹(我们需要在作业中配置该文件夹),并使用每个项目的subversion-tag-parameter和一个额外的Mega-project pom,它将所有下载的项目声明为模块(需要转到根文件夹) 。这项工作也可以完成所有的打包工作(压缩静态内容,将来自不同项目的静态文件合并为一个工具,...)。

  4. 部署

  5. 功能测试

到目前为止,2都有它自己的工作和3是完全自动的,我们只需要手动启动它。第4步是为CI工作,第5步是为CI计划的。步骤4是发布过程中需要自动化的热门人选(即使它只是部分)。

我希望这会有所帮助,并给你一些想法。