摘要
最近几年很多企业都在推行DevOps,本人结合之前工作的经历将DevOps落地过程分为以下几个部分阐述:持续集成、自动化测试、自动化部署、运维监控。希望能跟大家探讨分享DevOps落地过程中使用到的工具和技术。
目前大部分公司已使用各种工具不同程度的实现了持续集成,但没有统一的规范和标准,本文以较常见的Java项目为例说明自动化发布的过程和涉及到的工具,
概述
本文的自动发布是指将项目交付物发布到构件仓库,也可称为自动构建,而非自动部署。本文主要使用以下工具实现自动发布过程:
-
JIRA:需求管理工具
-
Gitlab:代码仓库,管理项目代码
-
Jenkins:持续集成的引擎,承载自动化集成流程,驱动、调度持续集成和交付过程
-
Artifactory:构件仓库,应用交付中心
通过以上工具完成自动化发布有以下好处:
- 以需求为起点在后续发布流程中任意环节可以对应到JIRA需求条目,确保最终交付物不会偏离原始需求。
- 减少手动操作部分,提高项目发布效率,降低出错概率和运维成本。
- 通过工具自动升级版本号,规范版本管理。
- 通过工具完成发布过程并提供最终交付物,可监控溯源。
流程
- 需求分析
参与人员:业务、需求、项目经理、开发
工作内容:使用JIRA分析需求。业务人员录入原始需求,需求人员协助项目经理将业务需求转换为开发需求。 - 创建代码库
参与人员:项目经理、开发
工作内容:使用Gitlab创建项目并根据JIRA上的需求条目创建功能分支,配置项目成员和分支保护策略。 - 代码开发
参与人员:开发
工作内容:遵循项目组制定的代码管理规范和分支管理策略开发代码。 - Jenkins监听代码库事件自动触发或由开发/测试人员手动触发构建流程。
- Jenkins 从Gitlab拉取代码并在构建服务器上编译构建,构建过程中执行单元测试用例并使用SonarQube扫描代码,最终将构建出的快照版本推送至Artifactory仓库。
- 发布正式版本
参与人员:项目经理
工作内容:编译构建、静态代码扫描、收集发布版本对应JIRA需求条目并与代码提交时携带需求条目编号比对、推送正式版本至Artifactory仓库、创建发布分支、指定下个开发版本号。