价值
以自动化编排为脚手架哦,串联起项目管理、代码开发、代码编译、制品管理、开发转测试、环境部署、测试用例维护、版本测试、报告管理、版本发布、验收反馈等软件开发周期流程,最大程度提高效率和质量保证
DevOps 本质是一场以提升质量內建为手段,以加速软件系统价值流反馈为目标的技术提升和管理变革
CICD说明
CI
持续集成场景(CI),主要覆盖自动化代码构建-测试-发布工作流,比如:
- 工程编译
- 代码库托管
- 制品库
- 流水线
CD
持续部署场景(CD),主要覆盖应用发布变更、基础管控等运维自动化阶段,比如:
- 配置资源管理,如主机设备、业务模块、服务进程端口、自定义CI模型等
- 基础运维管控,如脚本执行、文件分发、定时任务等场景
- 细粒度的权限管控以及用户体系自主建设
- 任务调度编排和执行,如编排一个完整的应用自动发布流程,包括备份、版本更新、配置变更、服务上线等流程节点
- 流程服务管理,如发布变更、工单事件、问题管理等
- 自定义 SaaS 开发及公司内第三方系统联动对接
包含产品:PaaS 平台、配置平台、作业平台、权限中心、用户管理、节点管理、标准运维、ITSM(流程服务管理)
CO
持续运营场景(CO),主要覆盖监控&告警处理、日志检索分析,比如:
- 不同业务场景下的监控配置、告警通知、报表视图展示、分析定位及自定义的采集上报等
- 日志采集&检索查询、关键字的日志监控、日志提取等日志服务
- 故障自动处理,包括实时发现告警、预诊断分析、自动恢复故障
包含产品:监控平台、日志平台
容器管理的运维进阶场景,主要覆盖基于原生 K8S 的容器编排,比如:
- 管理自建云原生及各个云服务商K8S集群
- 基于Helm管理业务应用
- 提供容器监控告警与容器日志采集与查询
阶段和领域
- 项目管理
- 需求/缺陷跟踪
- 代码管理
- 构建/部署/测试
- 发布
- 日志监控
参考指导&示例
https://lib.jimmysong.io/blog/enterprise-ci-cd-best-practices/
美团工程能效
作业调度: https://tech.meituan.com/2022/07/14/cicd-pipeline.html
DevOps组件
- 安全登录:
- jump server
- 流水线:
- Jenkins
- 项目
- 禅道
- 代码托管&扫描:
- gitea
- sonarqube
- 制品管理:
- harbor
- nexus
- JFrog
- 部署环境:
- k8s
DevOps流程
精简流程
精细流程
个人
团队
测试
集成
发布
角色和阶段
版本和关联
实践
资料
流程总览
期待流程
项目演示
演示的代码仓地址:http://xx/MicroService/x_service
核心:构建符合项目要求的流水线建设
- 代码托管
- 代码扫描
- 制品编译和管理
- 环境部署
- 自动化测试
- 发布上线
- 验收反馈
- 多分支流水线
- 具体执行的内容
代码托管
基于gitea的代码托管服务,一般是流水线的任务的起点,通过提交代码的需求,触发流水线任务
Jenkins
串联DevOps各个阶段的核心平台
配置Jenkinsfile
- 在代码仓根目录下配置Jenkinsfile
- agent是执行机信息
- triggers是触发流水线的配置信息
- environment是全局变量信息
- stages是流水线执行过程
- post是执行结束后需要触发的流程
重要:Jenkins通过配置文件定义流水线,所有依赖的第三方服务需要以插件的形式在Jenkins安装并在全局配置中启用
扫描多分支流水线
在各个分支中,有Jenkinsfile,点击”扫描分支流水线“,就能立刻获取到对应的分支
触发方式
手动触发
提交代码触发
在Jenkinsfile绑定触发的token,然后在代码仓绑定webhook, 支持自定义事件触发流水线任务
流水线报告
代码扫描
配置扫描规则
在根目录下配置sonar-project.properties代码扫描的门禁信息,具体使用方法见官方文档
修复漏洞问题
即使关注并修复版本,再提交MR请求到develop
制品编译和管理
编译
使用执行机,执行编译脚本,触发编译打包任务,构建镜像
管理
使用harbor管理制品,在执行机编译好镜像后,自动按照版本命名并推送到制品管理仓库
环境部署
环境是k8s环境,所以在Jenkins需要安装kubernetes插件,然后在流水线调用,即可完成部署任务
自动化测试
待补充
自动化执行
自动化报告
以操作系统数据报告为例,展示测试数据的管理方式,自动推送并以平台方式维护,具有统计分析和可视化能力,方便回溯和调用信息
发布上线
待定
验收反馈
待定
环境清理
在post中强制清理环境和相关文件,针对不同结果作出对应的处理措施
通知
绑定企业微信机器人等webhook地址,然后根据流水线执行结果,触发相对应的通知
评论区