如何使用Git(Bitbucket)+Jenkins管理单个功能的发布?
单个功能独立发布的Git+Jenkins流程优化方案
嗨,针对你的Java Maven项目(.war制品),结合Bitbucket+Jenkins的现有流程,要实现单个功能的独立发布,我们可以调整分支策略和Jenkins配置来搞定,具体方案如下:
1. 给Feature分支加预验证环节
你当前的流程是从master拉功能分支,开发完直接PR合并到master再发布——这个模式的问题是所有合并到master的功能会一起上线,没法单独推送单个功能。我们先调整第一步逻辑:
- 保持每个功能从master拉独立
feature/功能名分支的规则不变 - 功能开发完成后,先别急着提PR到master,先触发Jenkins构建这个
feature/功能名分支,把对应的.war包部署到TEST环境做单独验证- 给Jenkins配置一个监听
feature/*分支的任务:用Bitbucket的webhook触发,只要feature/*分支有新提交或创建,就自动执行mvn clean package构建,然后部署到TEST - 这样你就能在TEST环境单独测试这个功能,没问题再走后续合并流程
- 给Jenkins配置一个监听
2. 验证通过后的合并与发布
当单个功能在TEST验证OK后,再创建PR把feature/功能名合并到master,代码审核通过后完成合并。此时要发布这个单个功能到PROD,有两种灵活的方式:
- 方式一:直接发布master分支:如果团队约定只有验证通过的功能才会合并到master,那此时master上的代码就是已验证的单个(或多个已验证)功能,直接触发PROD发布即可
- 方式二:用Release分支单独发布:如果master上已经合并了其他未准备好发布的功能,那可以从已验证的
feature/功能名分支拉出一个release/功能名分支,直接让Jenkins部署这个release分支到PROD,之后再把这个release分支合并回master,避免代码遗漏
3. Jenkins配置的关键细节
- 拆分出两个核心任务:
- TEST部署任务:同时监听
feature/*和master分支,构建成功后自动部署到TEST环境 - PROD部署任务:改成可手动选择分支触发(比如选特定的feature/release/master分支),或者只监听
master和release/*这类经过验证的分支
- TEST部署任务:同时监听
- 制品归档:在Jenkins里配置归档构建好的.war包,每个分支的制品都保留下来,方便后续回滚或者重新发布单个功能
4. 团队要对齐的小约定
- 严格执行:单个功能必须在TEST环境验证通过后,才能合并到master
- 多功能批量发布:如果要同时推多个功能,就等这些功能都在TEST验证OK后,再一起合并到master,然后统一发布到PROD
- 回滚机制:如果单个功能发布到PROD出问题,直接用该功能对应的归档.war包回滚,或者在master上回退该功能的提交后重新构建发布
针对Maven的小补充
- 可以给feature分支的制品设置唯一版本号,比如在pom.xml里用
${project.version}-feature-${分支名}-${BUILD_NUMBER},这样在TEST环境能清晰区分不同功能的包,方便排查问题 - 合并到master后,统一用正式版本号(比如
1.0.2)来构建发布到PROD
内容的提问来源于stack exchange,提问作者Vishal Zanzrukia
相关产品推荐
相关产品推荐

