使用 Maven、SVN 和 Hudson(jenkins) 发布
Posted
技术标签:
【中文标题】使用 Maven、SVN 和 Hudson(jenkins) 发布【英文标题】:Release with Maven, SVN and Hudson(jenkins) 【发布时间】:2011-10-22 22:41:48 【问题描述】:我想做一个与 Maven 发布插件假设的含义略有不同的“发布”。
我有一个 web 项目(我想“发布”),它依赖于同样由同一个 hudson 构建的各种其他项目(虽然不是作为模块)。
“发布”应该执行以下操作:
通过 hudson 构建所有dependend^dependend 项目 构建网络项目(向 MANIFEST 添加递增的版本号) 将 web-project 部署到 tomcat(这已经在常规构建中) 在 svn 位置 x 创建一个包含版本号的新标签 将之前构建的项目的所有当前 svn/head 源复制到新标签中 将所有涉及项目的所有 pom 版本更改为 SVN /head 上的 $versionNumber.0.1-SNAPSHOT我认为这是每个人都必须做的事情,通过谷歌很难找到实际的解决方案。
【问题讨论】:
您的最后一个假设是一个有趣的假设。你为什么这么认为? 【参考方案1】:如果您有特定需求,那么我认为实现它们的最简单方法是编写脚本。 Hudson 中可以使用多种脚本语言作为构建步骤。
【讨论】:
【参考方案2】:听起来很像我们的要求。我们还没有在 Jenkins 中完全构建它。
所以我们有以下程序:
宣布代码冻结,使所有团队都能在主干中拥有“正确”的代码,并使代码彼此“同步”。
我们运行一个(本地开发的)java 工具来检查代码,为发布和发布标签创建分支。从下一次迭代开始,它还将使用新的快照版本更新主干。该工具有自己的配置文件,因此它知道版本号是/将是什么以及需要更新哪些项目(以及它们所在的位置)。
我们运行我们的“构建发布”作业,它与我们所有的内部企业存储库几乎没有联系(它只知道第三方和外部存储库)。该作业清除了本地 maven 存储库(它有自己的存储库,没有其他作业使用)。我使用 subversion-tag-parameter 下载我们所有项目的特定子文件夹(我们需要在作业中配置它)和一个额外的 Mega-project pom,它将所有下载的项目声明为模块(需要转到根文件夹) .这项工作还完成了所有需要的打包工作(压缩静态内容、将来自不同项目的静态文件合并到一个档案中……)。
部署
功能测试
到目前为止,2 有自己的工作,3 是完全自动化的,我们只需要手动启动它。第 4 步正在为 CI 工作,第 5 步为 CI 计划。第 4 步是发布过程自动化(即使只是部分自动化)的热门候选。
我希望这对您有所帮助并给您一些想法。
【讨论】:
以上是关于使用 Maven、SVN 和 Hudson(jenkins) 发布的主要内容,如果未能解决你的问题,请参考以下文章
Hudson + SVN + Maven 持续集成实现自动化编译打包部署(over SSH 和 Deploy war/ear to a container 两种部署方式)
Jenkins+Maven+Svn搭建持续集成环境持续集成和自动部署