前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CI/CD 改进方案设计

CI/CD 改进方案设计

原创
作者头像
行者深蓝
发布2024-03-12 20:14:12
1100
发布2024-03-12 20:14:12
举报

这是一个基于您的要求详细扩展的 CI/CD 改进方案设计。该设计旨在支持 Kubernetes (K8s) 和虚拟机 (VM) 环境中的应用程序部署,并利用 GitHub Actions 和 Jenkins 实现 CI/CD 流程。

1. 环境支持

  • K8s 环境: 使用 helmfile 部署应用程序。
  • VM 环境: 使用 Ansible playbook 部署应用程序。

2. CI 工具

  • GitHub Actions 和 Jenkins 用于实现 CI 流程。

3. CD 工具

  • GitHub Actions 和 Jenkins 用于实现 CD 流程。

4. CI 阶段检查

  1. 代码检查 (code lint & code sec check): 使用适合项目的代码静态分析工具进行代码规范和安全检查。
  2. 构建镜像 (build image): 将应用程序打包成容器镜像以供部署使用。
  3. 构建图表 (build chart): 使用 helmfile 构建 K8s 应用程序的 Helm 图表。
  4. 单元测试 (unit test): 运行应用程序的单元测试,确保基本功能正常。
  5. 集成测试 (integration test): 运行应用程序的集成测试,确保组件之间的交互正常。

5. CD 阶段检查

  1. 部署配置检查: 检查部署配置文件是否正确。
  2. 部署状态检查: 检查部署是否成功完成。
  3. 运行状态检查: 检查应用程序在部署环境中的运行状态。
  4. 监控配置项目检查: 检查监控配置是否正确,包括资源监控、日志监控和业务监控覆盖。
  5. 备份/回滚检查: 检查备份和回滚机制是否正常工作。

6. 分支模型和 Docker 镜像标签策略

  • 非主分支无 tag 构建的镜像标签: dev + git commit_id_前7位 + build num。
  • 非主分支 + tag 构建的镜像标签: stage + git commit_id_前7位 + build num。
  • 主分支 + cannary 构建的镜像标签: cannary + git commit_id_前7位 + build num。
  • 主分支 + V_Release_ID 构建的镜像标签: V_Release_ID + build num。

7. GitOps Workflow 分支示意图

  • 初始化阶段 (Init stage): 包括代码提交、PR、CI 作业和 CD 作业。
  • 循环阶段 (Loop stage): 持续处理代码提交、PR、CI 作业和 GitOps 配置同步。

8. CI Runner 镜像

  • 为不同任务 (代码检查、测试、构建镜像/图表、运行 Ansible) 使用特定的 CI Runner 镜像,以提高效率和可靠性。

这个设计提供了一个全面的框架,但具体的实现细节和工具选择应根据您的项目需求和环境来确定。

使用 PlantUML 绘制的 GitHub 分支模型图表:

代码语言:javascript
复制
plantumlCopy code@startuml
title GitHub 分支模型

[*] --> NonMaster : 非主分支
NonMaster --> NonMasterNoTag : 无 tag 构建的镜像
NonMasterNoTag --> dev : dev + commit_id_前7位 + build num

NonMaster --> NonMasterWithTag : 有 tag 构建的镜像
NonMasterWithTag --> stage : stage + commit_id_前7位 + build num

[*] --> Master : 主分支
Master --> Cannary : cannary 构建的镜像
Cannary --> VRelease : V_Release_ID + build num

@enduml

这个图表描述了 GitHub 分支模型,包括非主分支和主分支的不同情况下镜像标签的命名方式。

CI/CD Workflow Pipeline (CI/CD 工作流程管道)

GitHub Actions 工作流程文件 (GitHub Actions Workflow Files)

  1. workflows-call-build-image.yaml: 构建镜像的工作流程。
  2. workflows-call-build-charts.yaml: 构建图表的工作流程。
  3. workflows-call-deploy-charts.yaml: 部署图表的工作流程。
  4. workflows-call-setup-gitops.yaml: 设置 GitOps 的工作流程。
  5. workflows-call-run-chaos-mesh.yaml: 运行 Chaos Mesh 的工作流程。

Jenkinsfile

  1. workflows-call-run-ansible.yaml: 用于在虚拟机中运行 Ansible 的工作流程。

CI Runner Images (CI 运行器镜像)

CI Runner Image

描述

alpine-code-lint/Dockerfile

用于代码检查

alpine-test-tools/Dockerfile

用于测试代码和构建产物

alpine-image-builder/Dockerfile

用于构建 K8s/APP 镜像

alpine-chart-builder/Dockerfile

用于构建 K8s/APP 图表

alpine-ansible-runner/Dockerfile

用于在虚拟机中运行 Ansible

这些翻译将您提供的详细信息转换为中文,以便更好地理解 CI/CD 工作流程和 CI 运行器镜像。

编写一个 CICD improve 方案包括一下要点:

  1. 需要支持 k8s 环境容器应用,使用helmfile 部署应用
  2. 需要支持 VM 环境 应用,使用 ansible playbook部署应用
  3. 需要支持Pipeline Github Action,Jenkinsfile

| ENV | method | CI | CD |

| K8s-Stage | helmfile | Github Action | Github Action |

| K8s-Prod | helmfile | Github Action | Jenkinsfile |

| VM-Prod | ansible playbook | Github Action | Jenkinsfile |

列举下 CI 可能包含的check 阶段

  1. code lint & code sec check
  2. build image
  3. build chart
  4. 单元测试 5 集成测试

CD 可能包含的check 阶段

  1. 部署配置检查
  2. 部署状态
  3. 运行状态
  4. 监控配置项目检查(资源监控 日志监控,业务监控覆盖)
  5. 备份/回滚检查

提供下github branch 分支模型

  1. 非主分支 无tag 构建的镜像tag: dev+git commit_id_前7位+ build num
  2. 非主分支 + tag PickUp branch 构建的镜像tag: stage+git commit_id_前7位+ build num
  3. 主分支 + cannary 构建的镜像tag: cannary +git commit_id_前7位+ build num
  4. 主分支 + V_Realse_ID 构建的镜像 tag:V_Realse_ID+build num

基于GitOPS 的workflow 分支示意图:

  1. Init stage: code commit -> PR -> CI Jobs -> CD job -> Init ArgoCD CRD for APP
  2. Loop stage: code commit -> PR -> CI Jobs -> GitOPS Config Repo: | ArgoCD 控制器 ( watch GitOPS Config Repo) -> Syncd Stats

CI runner Image:

  • alpine-code-lint/Dockerfile For Code
  • alpine-test-tools/Dockerfile For Code & artifact
  • alpine-image-builder/Dockerfile for K8S/APP
  • alpine-chart-builder/Dockerfile K8S/APP
  • alpine-ansible-runner/Dockerfile VM/APP

genneral helm chart:

  1. App-frontend 2.APp-backend

CI/CD workflow

Github action workflow-call:

  1. workflows-call-build-image.yaml
  2. workflows-call-build-charts.yaml
  3. workflows-call-deploy-charts.yaml
  4. workflows-call-setup-gitops.yaml
  5. workflows-call-run-choas-mesh.yaml

Jenkinffile

  1. workflows-call-run-ansible.yaml for VM

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 环境支持
  • 2. CI 工具
  • 3. CD 工具
  • 4. CI 阶段检查
  • 5. CD 阶段检查
  • 6. 分支模型和 Docker 镜像标签策略
  • 7. GitOps Workflow 分支示意图
  • 8. CI Runner 镜像
  • CI/CD Workflow Pipeline (CI/CD 工作流程管道)
    • GitHub Actions 工作流程文件 (GitHub Actions Workflow Files)
      • Jenkinsfile
      • CI Runner Images (CI 运行器镜像)
      • 基于GitOPS 的workflow 分支示意图:
      • CI runner Image:
      • genneral helm chart:
      • CI/CD workflow
      相关产品与服务
      腾讯云代码分析
      腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
      http://www.vxiaotou.com