上一篇文章介绍了Jenkins 多分支类型pipeline与Bitbucket Branch source 插件集成的配置 Jenkins 使用Multiple Pipeline 和 Bitbucket Branch Source Plugin (一)

本篇文章是开发流程的一个case,也可以看成这个插件的一个最佳实践。

Git分支策略:GitLab Flow

本case使用GitLab Flow的分支策略。

  1. 创建三个长期存在的分支,master作为开发分支,pre-production作为UAT分支,production作为生产分支。
  2. 当开发新需求时(user story),开发人员从master分支clone代码到本地,创建用于开发新需求的分支。
  3. 开发完成后创建pull request,将特性分支合并到master分支。
  4. pre-production分支只能由master分支通过pull request合入代码。production分支只能由pre-production分支通过pull request合入代码。
  5. Pull request创建时会自动构建,构建时代码取自源分支,例如,创建了由pre-production向production合并的Pull request,则会取pre-production分支的代码进行构建。
  6. 当merge之后与三个长期存在的分支对应的jenkins pipeline都会自动构建,构建时的代码取自merge的目标分支,例如,由pre-production向production合并的Pull request通过审核,并成功执行了merge操作,则production将会自动构建。
  7. 与特性分支对应的pipeline会自动创建,并且会随着分支的删除而自动删除。
  8. 虽然所有分支都是自动构建,但是各个分支构建时执行的操作并不相同,(在Jenkinsfile中通过when条件判断分支名,根据分支名执行不同的操作)。下面逐个分支列出构建执行的操作。
    (1)特性分支:编译,单元测试(Junit),静态代码质量检查(SonarQube)
    (2)master分支:编译,单元测试,静态检查,部署,API测试
    (3)pre-production分支:编译,单元测试,静态检查,部署,集成测试,性能测试
    (4)production分支:编译,单元测试,部署,添加监控
    (5)PR分支(Pull Request自动创建):编译,单元测试,静态检查

Jenkins job配置

创建jenkins item,类型选择“Multibranch Pipeline”,item配置:
Jenkins 使用Multiple Pipeline 和 Bitbucket Branch Source Plugin (二)
配置之后保存,Jenkins将自动扫描仓库中的分支,创建对应的pipeline,并自动构建(前提是代码仓库中有Jenkinsfile):
Jenkins 使用Multiple Pipeline 和 Bitbucket Branch Source Plugin (二)

开发流程

1. 创建分支并提交代码到仓库
  • 先创建一个特性分支,可以添加或修改一个文件,然后push到仓库:
    feature/chaiyingchao-issue-dev-20

  • 到jenkins 项目中就可以看见与新分支对一个的pipeline,并且已经自动构建了,如下图所示:
    Jenkins 使用Multiple Pipeline 和 Bitbucket Branch Source Plugin (二)
    通过Stage View可以看见都执行了哪些操作,跳过了哪些操作。这里是在Jenkinsfile中使用when对分支进行判断,不同分支执行不同操作。
    Jenkins 使用Multiple Pipeline 和 Bitbucket Branch Source Plugin (二)

2. 提交pull request

在bitbucket web界面上提交pull request,可以添加多个代码评审人(代码评审为另外的流程,在此不详细解释)。
Jenkins 使用Multiple Pipeline 和 Bitbucket Branch Source Plugin (二)
当创建完pull request之后,在jenkins中可见与其对应的job已被创建,并且已构建。
Jenkins 使用Multiple Pipeline 和 Bitbucket Branch Source Plugin (二)
同时构建状态(成功或者失败)会显示到bitbucket的pull request中,供审批人参考:
Jenkins 使用Multiple Pipeline 和 Bitbucket Branch Source Plugin (二)

3. merge

代码审查没问题将执行merge操作,同时应该删除特性分支,这在bitbucket里是一个可选项(特性分支是临时分支)。
Jenkins 使用Multiple Pipeline 和 Bitbucket Branch Source Plugin (二)
merge之后master分支自动执行了一次构建,特性分支则被标记为删除。根据你设置的策略,与这个特性对应的pipeline job会被删除。
Jenkins 使用Multiple Pipeline 和 Bitbucket Branch Source Plugin (二)

4. 发布到UAT

当master分支的程序经过测试,可以发布到UAT环境时,同样提交pull request,源master,目标pre-production。与从特性分支合并到master分支一样,除了每一个环境执行的操作不同,其它流程都相同。merge之后,程序将自动部署到pre-production环境。

5. 发布到生产环境

从pre-production提交pull request,合并代码到production。

在bitbucket 的branches中还可以看见每个分支的详细状态,也包括build的状态,入下图:
Jenkins 使用Multiple Pipeline 和 Bitbucket Branch Source Plugin (二)

至此,利用Multiple Pipeline 和 Bitbucket Branch Source Plugin插件可以使开发人员协作更加顺畅(状态清晰可见),工作更高效(pipeline的创建和删除都是自动化的)。

如果本文对您有所帮助,请帮忙点赞,谢谢!

相关文章:

  • 2021-10-13
  • 2022-01-21
  • 2021-06-01
  • 2022-12-23
  • 2022-12-23
  • 2021-12-06
  • 2021-08-15
  • 2021-06-08
猜你喜欢
  • 2021-12-11
  • 2021-12-03
  • 2022-12-23
  • 2022-12-23
  • 2021-07-08
  • 2022-12-23
  • 2022-01-04
相关资源
相似解决方案