6

我正在考虑使用 SVN、Jenkins 和 Maven 的部署管道。目前我被困在我通常会调用mvn release:perform工作副本的地方。

在考虑部署管道时,我想创建一个管道,其中每个提交都可用于发布软件以进行测试/生产。假设我有 5 个构建,我决定将构建 3(带有修订版 3)发布到生产环境。已经有 2 个新的主干提交(现在是修订版 5)。

是否可以maven-release-plugin在修订版 3 中使用签出/构建/标记/提交版本?当 maven-release-plugin 完成发布时,它通常会将修改后的 POM 提交到trunk

我对这里的任何信息或建议都很满意,所以请随时向我介绍书籍(例如http://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912),博客文章,詹金斯文档......也许我完全走错了路。

4

2 回答 2

2

默认情况下,发布插件会根据您的工作副本的内容创建发布,它只是确保您在这样做之前没有任何未提交的内容。AFAIK 它不会强制更新源,因为这通常是持续集成系统(在您的情况下为 Jenkins)的工作。所以任何被 Jenkins 检查出来的东西都会被释放。

您正在尝试做的事情听起来更像是 Jenkins 方面的配置更改,将其指向正确的修订版。

另一方面,如果 POM 文件作为发布的一部分进行了修改,但同时在 SVN 中进行了更改,那么当 Maven 想要签入修改后的 POM 文件时,您将遇到冲突。这种情况可能会发生,具体取决于您希望发布的版本。

基于此,在发布之前总是创建一个分支可能更有意义。因此,您将基于修订版 3 创建一个分支,然后在该分支中创建您的版本。这样,您就不会遇到提交在最近修订中已更改的资源的问题。

创建分支并检查它可能也可以通过 Jenkins 和 Maven 自动化。

于 2013-01-11T15:54:46.943 回答
1

据我测试,这是不可能的。

更明确地说,正如 nwinler 所说,当你发布时,maven 会尝试提交修改后的 pom.xml 文件。但是,如果它是比当前版本更旧的版本,SVN 会抱怨您的源不是最新的。所以它不会工作。... 我所知道的。

您可以阅读有关促销构建的文档。我没有发现任何一个足够清楚可以指出的内容(在撰写此消息的几分钟内)。

于 2013-01-13T11:56:30.890 回答