下面是 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 因此是一个“热”分支,代表生产环境的当前状态。
这适用于进行为期一周的冲刺的小型开发人员团队。
问题:
- 这个设置听起来怎么样?
- 我能否让 Maven 正确运行,或者我需要编写脚本吗?
- 你爸爸是谁?他是做什么的?
最佳答案
我不推荐 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/