目 录CONTENT

文章目录

CI CD CO 实践

Administrator
2024-03-01 / 0 评论 / 0 点赞 / 21 阅读 / 0 字

价值

以自动化编排为脚手架哦,串联起项目管理、代码开发、代码编译、制品管理、开发转测试、环境部署、测试用例维护、版本测试、报告管理、版本发布、验收反馈等软件开发周期流程,最大程度提高效率和质量保证
DevOps 本质是一场以提升质量內建为手段,以加速软件系统价值流反馈为目标的技术提升和管理变革

Pasted image 20231011111619.png

CICD说明

CI

持续集成场景(CI),主要覆盖自动化代码构建-测试-发布工作流,比如:

  • 工程编译
  • 代码库托管
  • 制品库
  • 流水线

CD

持续部署场景(CD),主要覆盖应用发布变更、基础管控等运维自动化阶段,比如:

  • 配置资源管理,如主机设备、业务模块、服务进程端口、自定义CI模型等
  • 基础运维管控,如脚本执行、文件分发、定时任务等场景
  • 细粒度的权限管控以及用户体系自主建设
  • 任务调度编排和执行,如编排一个完整的应用自动发布流程,包括备份、版本更新、配置变更、服务上线等流程节点
  • 流程服务管理,如发布变更、工单事件、问题管理等
  • 自定义 SaaS 开发及公司内第三方系统联动对接

包含产品:PaaS 平台、配置平台、作业平台、权限中心、用户管理、节点管理、标准运维、ITSM(流程服务管理)

CO

持续运营场景(CO),主要覆盖监控&告警处理、日志检索分析,比如:

  • 不同业务场景下的监控配置、告警通知、报表视图展示、分析定位及自定义的采集上报等
  • 日志采集&检索查询、关键字的日志监控、日志提取等日志服务
  • 故障自动处理,包括实时发现告警、预诊断分析、自动恢复故障

包含产品:监控平台、日志平台

容器管理的运维进阶场景,主要覆盖基于原生 K8S 的容器编排,比如:

  • 管理自建云原生及各个云服务商K8S集群
  • 基于Helm管理业务应用
  • 提供容器监控告警与容器日志采集与查询

阶段和领域

  • 项目管理
  • 需求/缺陷跟踪
  • 代码管理
  • 构建/部署/测试
  • 发布
  • 日志监控

企业微信截图_20240301110920.png


参考指导&示例

https://lib.jimmysong.io/blog/enterprise-ci-cd-best-practices/

美团工程能效
作业调度: https://tech.meituan.com/2022/07/14/cicd-pipeline.html


DevOps组件

  1. 安全登录:
    1. jump server
  2. 流水线:
    1. Jenkins
  3. 项目
    1. 禅道
  4. 代码托管&扫描:
    1. gitea
    2. sonarqube
  5. 制品管理:
    1. harbor
    2. nexus
    3. JFrog
  6. 部署环境:
    1. k8s

DevOps流程

企业微信截图_20240301111355.png

Pasted image 20230808110033.png

精简流程

Pasted image 20230731170007.png

精细流程

个人

Pasted image 20230731170030.png

团队

Pasted image 20230731170037.png

测试

Pasted image 20230731170106.png

集成

Pasted image 20230731170128.png

发布

Pasted image 20230731170139.png


角色和阶段

企业微信截图_20240301113149.png


版本和关联

Pasted image 20230731170434.png

Pasted image 20230731170459.png

实践

资料

流程总览

企业微信截图_20240301135027.png

期待流程

Pasted image 20230731170007.png

项目演示

演示的代码仓地址:http://xx/MicroService/x_service
核心:构建符合项目要求的流水线建设

  1. 代码托管
  2. 代码扫描
  3. 制品编译和管理
  4. 环境部署
  5. 自动化测试
  6. 发布上线
  7. 验收反馈
  • 多分支流水线

Pasted image 20230919111150.png

  • 具体执行的内容

Pasted image 20230919101337-jxdh.png

代码托管

基于gitea的代码托管服务,一般是流水线的任务的起点,通过提交代码的需求,触发流水线任务

Jenkins

串联DevOps各个阶段的核心平台

配置Jenkinsfile

  1. 在代码仓根目录下配置Jenkinsfile
  2. agent是执行机信息
  3. triggers是触发流水线的配置信息
  4. environment是全局变量信息
  5. stages是流水线执行过程
  6. post是执行结束后需要触发的流程
    重要:Jenkins通过配置文件定义流水线,所有依赖的第三方服务需要以插件的形式在Jenkins安装并在全局配置中启用

Pasted image 20230919100244.png

扫描多分支流水线

在各个分支中,有Jenkinsfile,点击”扫描分支流水线“,就能立刻获取到对应的分支

触发方式

手动触发

Pasted image 20230919100808.png

提交代码触发

在Jenkinsfile绑定触发的token,然后在代码仓绑定webhook, 支持自定义事件触发流水线任务

流水线报告

Pasted image 20230919103151.png

代码扫描

配置扫描规则

在根目录下配置sonar-project.properties代码扫描的门禁信息,具体使用方法见官方文档

Pasted image 20230919101829.png

Pasted image 20230919101922.png
Pasted image 20230919102030.png

修复漏洞问题

即使关注并修复版本,再提交MR请求到develop

Pasted image 20230919103628.png

制品编译和管理

编译

使用执行机,执行编译脚本,触发编译打包任务,构建镜像

管理

使用harbor管理制品,在执行机编译好镜像后,自动按照版本命名并推送到制品管理仓库

环境部署

环境是k8s环境,所以在Jenkins需要安装kubernetes插件,然后在流水线调用,即可完成部署任务

自动化测试

待补充

自动化执行

自动化报告

以操作系统数据报告为例,展示测试数据的管理方式,自动推送并以平台方式维护,具有统计分析和可视化能力,方便回溯和调用信息

发布上线

待定

验收反馈

待定

环境清理

在post中强制清理环境和相关文件,针对不同结果作出对应的处理措施
Pasted image 20230919103756.png

通知

绑定企业微信机器人等webhook地址,然后根据流水线执行结果,触发相对应的通知

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区