我希望在 Jenkins 中设置发布工作。我们使用 Jenkins、Maven 3 和 Perforce 进行源代码控制,使用 Nexus 进行存储库管理。
我已经使用 maven 目标 release:prepare 和 release:perform 设置了作业,但是我注意到构建时间加倍,因为编译和测试都发生了两次。我目前对 maven-release-plugin prepare 和 perform 目标的理解如下:
maven-release-plugin 准备:
- 确保不对工作区中的文件进行本地修改
- 编辑 POM 以设置发布版本
- 执行默认为
clean verify
确保代码可以编译并通过测试的preparationGoals。 - 提交修改后的 POM
- 创建 VCS 标记
- 将 POM 的版本增加到下一个开发版本,并将这些 POM 提交给 VCS
此外,还创建了一个带有 VCS 标记以及发布和开发版本信息的 release.properties 文件
maven-release-plugin 执行
- 使用来自 release.properties 的 VCS 标记将源代码的新副本检出到默认位置 target/checkout
- 根据项目是否有distributionManagement执行
deploy
/的目标deploy-site
因此,为了停止将构建时间加倍并保持构建完整性,我正在考虑执行以下操作:
- 让 jenkins 签出源存储库中最新源代码的新副本
- 配置 release 插件的 preparesGoals 配置元素
clean deploy
- 赶紧跑
release:prepare
有了以上内容,我认为我可以将两者 (prepare
和perform
) 合并为一个步骤并节省构建周转时间。我们通常总是使用一个构建环境来构建一个堆栈(Java 6 等),因此只要代码在准备步骤中成功编译并通过测试,那么将工件部署到 Nexus 就可以了。
我主要是在寻找上述可能出错的相反想法,以便我可以从我的眼睛看不见的东西中拯救出来。
谢谢