我正在考虑使用SVN,Jenkins和Maven的部署管道。目前我被困在我通常会在工作副本上调用mvn release:perform
的位置。
在考虑部署管道时,我想创建一个管道,其中每个提交都可用于发布测试/生产软件。假设我有5个版本,我决定将版本3(带有修订版3)发布到生产中。 trunk 已经有2次新提交(现在是修订版5)。
是否可以使用maven-release-plugin
签出/构建/标记/提交版本3的版本?当maven-release-plugin完成发布时,它通常会提交修改后的版本POM到主干。
我对这里的任何信息或建议感到高兴,所以请随时指点我的书(如http://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912),博客文章,Jenkins文档......也许我完全走错了轨道
答案 0 :(得分:2)
默认情况下,发布插件会根据工作副本的内容创建发布,它只会确保您在执行此操作之前没有任何未提交的内容。 AFAIK它不会强制更新源,因为这通常是持续集成系统的工作(在您的情况下为Jenkins)。因此,Jenkins签出的任何内容都将被释放。
你想要做的事情听起来更像詹金斯方面的配置变化,指向正确的版本。
另一方面,如果POM文件作为发布的一部分进行了修改,但在此期间已在SVN中进行了更改,则当Maven想要检入修改后的POM文件时,您将遇到冲突。这种情况可能会发生,具体取决于您希望在发布时采用的方式。
基于此,在进行发布之前始终创建分支可能更有意义。因此,您将基于修订版3创建一个分支,然后在该分支中创建您的版本。这样,您就不会遇到提交更新版本中已更改的资源的问题。
创建分支并将其签出也可以通过Jenkins和Maven自动完成。
答案 1 :(得分:1)
据我测试,它是不可能的。
更明确地说,正如nwinler所说,当你发布时,maven尝试提交修改后的pom。但是,如果它是比当前版本更旧的版本,SVN会抱怨您的来源不是最新的。 所以它不起作用。 ......据我所知。
您可以阅读有关促销构建的文档。我没有发现任何一个足够明确的指出(在写这篇消息的几分钟内)。