分享一个ci/cd的自动部署想法(代码片段)

跨界架构师 跨界架构师     2022-11-28     154

关键词:

- sql1 - sql2 - sql1 - sql2


- XXXProject-2564 - XXXProject-2564

相信你从文件格式中也能明白每一个属性的意义吧?


/02 识别配置和 DB 变更文件的新增/

聪明的你可能已经根据前面的《文件名的定义》部分内容猜到了,就是通过 Jira ID 来识别。具体操作方式是:

  1. 研发将配置、DB变更文件与代码一起提交到Gitlab 仓库。

  2. 如果检测到 Gitlab 的 commit 信息中带 Jira ID,那么会触发构建,并且将该镜像与 commit 中的 Jira ID 关联。

  3. 然后根据 Jira ID 去找 infra_changes 目录中与该 Jira ID 相关的变更文件,将它们与镜像放到一起。



/03  将构建的镜像、变更文件打包到一起通知到运维与 DBA /

如果运维和DBA已经有相关的自动化操作系统的话,可以直接在系统层面进行打通。否则的话,直接发出一个飞书或者钉钉消息就好了。


/04  部署 Alpha 环境前的可用性检测/

这个目前能想到的好像只有静态代码扫描了。


/05  每个程序提供健康检查接口,用于检测部署结果/

健康检查的作用在于,在部署完之后,通过调用每个系统的健康检查接口来快速得到某个程序的自检结果。毕竟只靠冒烟测试的话,整个效率会比较低。

具体的检查项:

比如数据库连接是否正常,所依赖的外部系统是否已经就绪等等。


/06  自动化的冒烟测试/

这个大家应该都知道,就不展开了。


大体上就这么多。等后面实际运用起来之后应该还会有一些迭代变化,到时候如果我觉得值得分享的话,再来和大家分享。

好了,总结一下。

这篇呢,Z 哥和你分享了我在目前团队中正在做的一个与 CI/CD 相关的事情。

为了确保整个自动化过程的尽可能稳定,我们需要基于两个原则不断思考和打磨整个过程。他们分别是:

  • 在自动部署之前,尽可能提前检测出部署后会导致该程序的上下游甚至整个系统不可用的风险。比如,通过静态代码检测。

  • 部署之后,尽可能广的识别上下游以及整个系统的异常,及时回滚。比如,通过冒烟测试。



  • 在具体的实践过程中,主要有以下六个步骤:

    1. 配置和数据库变更文件的标准制定

    2. 能够识别配置和数据库变更文件的新增

    3. 能够将构建的镜像、变更文件打包到一起通知到运维与 DBA(条件允许的话,直接在系统层面打通)

    4. 在部署 Alpha 环境前的可用性检测。

    5. 每个程序提供健康检查接口,用于检测部署结果。

    6. 自动化的冒烟测试。用于检测 Alpha 环境的可用性,并触发回滚。


    希望对你有所启发。

    如果你有什么关于CI/CD的好想法,欢迎和我交流哈~

    推荐阅读:

  • goroutine配上panic会怎样?

  • 2021,我的巨变之年

  • 原创不易,如果你觉得这篇文章还不错,就「点赞」或者「在看」一下吧,鼓励我的创作 :)

    也可以分享我的公众号名片给有需要的朋友们。

    如果你有关于软件架构、分布式系统、产品、运营的困惑

    可以试试点击「阅读原文

    ci/cd(代码片段)

    CI/CD  CI/CD是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。CI/CD的核心概念是持续集成、持续交付和持续部署。持续集成:是一种软件开发实践,团队开发人员频繁提交代码到源代码仓库,每次提交都进行... 查看详情

    jenkins与docker的自动化ci/cd流水线实战(代码片段)

    Jenkins与Docker的自动化CI/CD流水线实战标签(空格分隔):docker的部分一:什么是CI/CD二:发布流程设计三:部署Git仓库并上传测试代码一:什么是CI/CD持续集成(ContinuousIntegration,CI):代码合并、构建、部署、测试都在一起,不... 查看详情

    ci/cd系列之阿里云云效2020应用篇(代码片段)

    ...试图提供一站式DevOps平台,将原先零散的管理平台整合成一个掌管项目全生命周期的综合性管理平台,想法倒是蛮好的,目 查看详情

    ci/cd技术专题「jenkins实战系列」如何通过gitlab对接jenkins构建提交自动触发部署构建体系指南(上部)(代码片段)

    前因后果最近,发现我们公司的自动化体系做的实在是不咋地,每次提交push完代码之后,还需要登录到服务器进行执行下docker脚本,之后才能拿到镜像,一说到这里我就要吐了,CI/CD做的简直是一团糟࿰... 查看详情

    ci/cd技术专题「jenkins实战系列」jenkinsfile+dockerfile实现自动部署(代码片段)

    ...;对shell有点了解,对docker有点了解环境准备新建-构建一个Mav 查看详情

    ci/cd技术专题「jenkins实战系列」jenkins实现自动化部署+自动化合并其他分支(代码片段)

    前提概要前面的文章中介绍过了,针对于Jenkins的Window环境的安装以及部署到Linux环境的案例和基本配置,【CI/CD技术专题】「Jenkins实战系列」(1)全流程介绍Jenkins环境搭建+基础部署配置(Windows->Linuxÿ... 查看详情

    还在用jenkins?试试gitlab的ci/cd功能吧(代码片段)

    在之前,要实现自动化打包部署,一般都需要借助Jenkins。不过,现在Gitlab的CI/CD功能也能实现自动化部署,并且操作更加简单。如果你也正在使用Gitlab作为Git仓库的话,不妨试试它的CI/CD功能。一、安装通过Git... 查看详情

    ci/cd技术专题「jenkins实战系列」jenkins+pipeline构建自动化部署(代码片段)

    ...中Pipeline能够将以前project中的配置信息以steps的方式放在一个脚本里,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程,形成流水式发布,构建步 查看详情

    gitlabci/cd自动部署方案探索

    ...,但是gitlab-runner配置简单,很容易与gitlab集成。当新建一个项目的时候,不需要配置webhook回调地址,也不需要同时在jenkins新建这个项目的编译配置,只需在工程中配置gitlab-ci.yml文件,就可以让这个工程可以进行编译。 在gi... 查看详情

    实践分享!gitlabci/cd快速入门(代码片段)

    用过GitLab的同学肯定也对GitLabCI/CD不陌生,GitLabCI/CD是一个内置在GitLab中的工具,它可以帮助我们在每次代码推送时运行一系列脚本来构建、测试和验证代码的更改以及部署。Rainbond本身默认集成了CI/CD的整套流程,用户只需提供... 查看详情

    docker与jenkins的自动化ci/cd流水线实战(代码片段)

    docker与jenkins的自动化CI/CD流水线实战在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署、交付(CD)。本文基于Jenkins+Docker+Git... 查看详情

    jenkins与docker的自动化ci/cd实战(代码片段)

    ...续部署、交付(CD)。本文基于Jenkins+Docker+Git实现一套CI自动化发布流程。一、发布流程设计工作流程:开发人员提交代码到Git版本仓库;Jenkins人工/定时触发项目构建;Jenkins拉取代码、代码编码、打包镜像、推送到镜像仓库;Je... 查看详情

    ci&cd

    ...D简介CI/CD持续开发软件的方法,侧重于软件开发过程中的自动化,可以不断构建、测试以及部署代码。CI,当每一次更改的代码被推送到远程分支后,可以创建一组脚本来自动地构建和测试这些更改,确保这些更改可以通过一些... 查看详情

    ci与cd之docker上安装jenkins(代码片段)

    ...如每小时或至少每天一次)来避免这种情况的出现,通过自动检测、拉取、构建和(在大多数情况下)进行单元测试的过程,来保障代码的质量可以进行下一步的使用,这也是持续集成的目的,CI是属于开发人员的自动化流程。&... 查看详情

    gitlab-ci-runner安装(代码片段)

    ...成功后,部署到线上服务器(CD)gitlab-runner介绍gitlab提供了一个持续集成的服务,如果你在项目仓库里面加入.gitlab-ci.yml文件同时给 查看详情

    ci/cd——构建企业级docker+jenkins+git+harbor流水线自动化持续集成持续发布平台(代码片段)

    构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台CI/CD是什么?持续集成(CI)/持续交付(CD)的优势自动化部署流程图GitGithubGitlab的区别前言:一些自己想说的话部署Docker+Jenkins+Git+Harbor流水... 查看详情

    ci/cd——构建企业级docker+jenkins+git+harbor流水线自动化持续集成持续发布平台(代码片段)

    构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台CI/CD是什么?持续集成(CI)/持续交付(CD)的优势自动化部署流程图GitGithubGitlab的区别前言:一些自己想说的话部署Docker+Jenkins+Git+Harbor流水... 查看详情

    serverless架构下的ai应用开发(代码片段)

    ...;CI/CD的核心概念是持续集成、持续交付和持续部署。作为一个面向开发和运营团队的解决方案,CI/CD主要针对集成新代码时所引发的问题。具体而言,CI/CD可以让持续自动化和持续监控贯穿于应用的整个生命周期(从... 查看详情