java - 使用 maven 发布多个长期存在的分支

标签 java maven version-control jenkins release-management

下面是 Subversion、Jenkins、Beanstalk 设置:

  • trunk/-> 开发主线
    • CI 以 checkin 为基础
    • 成功的 CI 构建会生成推送到“测试”Beanstalk 环境的 CD 构建
  • branches/qa/-> 当前候选版本
    • CI 以 checkin 为基础
    • 成功的 CI 构建产生 CD 构建,推送到“QA”Beanstalk 环境
  • branches/prod/-> 当前版本
    • CI 以 checkin 为基础
    • 成功的 CI 构建会生成推送到“Prod”Beanstalk 环境的 CD 构建

基本上我想做的是:

  • 开发周期从主干开始(主干:0.1-SNAPSHOT)
  • 当开发周期完成时分支到 qa 并成为 qa 周期。同时在主干中开始下一个开发周期(主干 0.2-SNAPSHOT,qa:0.1-SNAPSHOT)
  • 当 qa 周期完成时分支到 prod 并执行 maven 发布。同时开始下一个质量检查周期(trunk 0.2-SNAPSHOT,质量检查:0.2-SNAPSHOT,产品:0.1)

我们的想法是进行短冲刺,在每个冲刺结束时,开发周期结束,质量检查周期开始。质量检查周期完成后,它会被推送到生产环境。

我想保留分支并合并到\从分支而不是删除和重新创建。这个想法是,在 qa 中所做的任何修复都将合并回 intro trunk,而在 prod 中所做的任何更改都将合并回 qa(并返回到 trunk)。

prod 因此是一个“热”分支,代表生产环境的当前状态。

这适用于进行为期一周的冲刺的小型开发人员团队。

问题:

  1. 这个设置听起来怎么样?
  2. 我能否让 Maven 正确运行,或者我需要编写脚本吗?
  3. 你爸爸是谁?他是做什么的?

最佳答案

我不推荐 qa 和 prod 分支。阅读颠覆最佳实践。我推荐 The SVN Book ,特别是关于分支/合并的第 4 章。

即使是为了 QA(通过标签),您也应该对每个版本进行版本控制。主干用于当前的开发工作,标签用于发布版本(定义为“功能完整”,而不是它所处的环境),分支用于缺陷修复(除其他外)。

示例场景:

1.0 版正在生产中,您的团队刚刚发布了 2.0 版以进行 QA 测试,现在正在开发 3.0 版。此时你会:

  • /trunk(开发人员在 3.0 上工作)
  • /tags/2.0(用于质量检查)
  • /tags/1.0(生产中的历史)

如果您的 QA 团队在 2.0 中发现问题,您将创建 2.0 标记的分支。进行修复,合并到主干,然后将分支发布为 2.0.1(另一个标签)。然后你会得到:

  • /trunk(致力于 3.0 的开发人员,+ 2.0 缺陷修复)
  • /branches/2.0.*(使用 * 字符表示这是提交所有 2.0.* 修复的地方。如果在 2.0 代码中发现另一个缺陷,您可以重用同一分支)
  • /tags/2.0(原始标签 QA 正在测试缺陷)
  • /tags/2.0.1(2.0 代码库,仅修复缺陷)
  • /tags/1.0(生产中的历史)

关于java - 使用 maven 发布多个长期存在的分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11856110/

相关文章:

java - 如何使用 -e 开关从 eclipse 运行 maven

java - Tycho 无法解决片段对其他片段的依赖

git - 我可以使用 SVN 或 Mercurial 只提交部分代码吗?

java - 为什么 Java 允许在其标识符中使用控制字符?

java - (Akka HTTP)当我将 .XLSX 文件作为数组 [字节] 发送给用户时,用户将获得该文件夹

java - 从多对多关系返回值

java - 无法在 Eclipse IDE 中下载 CrudRepository 源 - 未找到源

java - 有没有办法制作一个灵活的java整数列表?

version-control - 任何可自动保存文档版本的Notepad++插件

git - GitHub.com 如何设置默认分支?