1

I want some "Maven with Mercurial release" knowledgeable opinion.

I already saw this thread and a few others.

We want to be agile and fast. We want to build once. Not one build for testing and one for release.

We have setup a continuous release process where we do the following:

  1. Jenkins checks for SCM changes on "server" repository (every 30 minutes). Also can be triggered manually
  2. Jenkins clones "server" repository
  3. Jenkins increments version in pom (example: 1.0.1 -> 1.0.2). NO Snapshots
  4. Start build, package, automatic deployments and tests
  5. If all is good, commit changed pom, tag and push back to "server" repository (merge if needed)
  6. Release good version to a "releases" system, where it's available for QA for further testing
  7. Developers will pull back changes from "server" repository and get new versiond poms

If a hot fix is needed for a good release

  • A developer will clone the relevant tag from "server" repository
  • Do the fix, push back to a "server+fix" repository
  • Jenkins will build as before
  • If good, the fix will also be pushed to the main "server" repository

We found this process to be very quick and clean.

I want your opinion on the flow, with ideas to improve. Remember - Fast, Continuous and Build once.

Thanks in advance!

4

1 回答 1

1

+1 无快照规则。我认为这一切都很好。

将好的版本发布到“发布”系统,供 QA 进行进一步测试

什么是“发布”系统。它是一个 Maven 存储库吗?新构建是否会自动部署到 QA 环境?它是如何从存储库中提取的?您可以使用dependency:get从 maven repo 中提取一个 jar 。但是,如果想在部署方面使用 Chef 或 Puppet 等基础设施自动化工具,最好将 rpm 发布到 maven 存储库(使用maven-rpm-plugin发布并使用nexus-yum-plugin启用拉取例如)或简单地设置您自己的yum 存储库

于 2013-01-18T04:54:47.023 回答