分享一个CI/CD的自动部署想法

Posted 跨界架构师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分享一个CI/CD的自动部署想法相关的知识,希望对你有一定的参考价值。

- 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,我的巨变之年

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

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

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

    可以试试点击「阅读原文

    Gitlab CI/CD自动部署方案探索

       

    如上图所示,当我们提交代码到 GitLab 仓库后,满足指定条件后就会触发 Pipeline 进行自动化构建、测试、发布等。

    Gitlab

    gitlab是做代码的版本管理,gitlab本身就用CI/CD的功能,原定是使用gitlab+Jenkins+Docker的流行部署框架的,但是gitlab-runner配置简单,很容易与gitlab集成。当新建一个项目的时候,不需要配置webhook回调地址,也不需要同时在jenkins新建这个项目的编译配置,只需在工程中配置gitlab-ci.yml文件,就可以让这个工程可以进行编译。

     

    在gitlab你的project下面,需要新建一个.gitlab-ci.yml文件.

    .gitlab-ci.yml 文件

    .gitlab-ci.yml 文件是一个申明式配置文件,放在项目的根目录下,用 stages 定义 Gi

    以上是关于分享一个CI/CD的自动部署想法的主要内容,如果未能解决你的问题,请参考以下文章

    CI/CD技术专题「Jenkins实战系列」如何通过Gitlab对接Jenkins构建提交自动触发部署构建体系指南(上部)

    Gitlab CI/CD自动部署方案探索

    Gitlab CI/CD自动部署方案探索

    Gitlab CI/CD自动部署方案探索

    CI/CD系列之阿里云云效2020应用篇

    CI / CD /CD 持续集成 持续交付 持续部署