专栏首页一日一工具从零打造自己的CI/CD系统|CD的演进之路

从零打造自己的CI/CD系统|CD的演进之路

从零打造自己的CI/CD系统|CD的演进之路

每个公司的CI/CD系统都是从最开始的刀耕火种时代到所谓的自动化时代慢慢演进的一个过程,期间可能会有各种各样的问题存在,有的公司借助开源工具来实现,也有公司在开源的基础上进行二次开发来满足公司的需求,团队规模很大的情况下一般会选择自研来满足高频迭代的场景需求。以下我们简单罗列下演进的几个阶段,后续我们会按照这个顺序进行文档的编写。

鸿蒙之初

•针对不同的项目编写与之适配的shell脚本•OPS跟着项目跑,因为要做不同的场景的适配•把脚本的公共部分抽出来复用•能解放一部分时间,但是约束依旧是很小

旭日东升

开始关注软件工程和基础设置组件,并在基础设置组件的基础上进行组合

Jenkins•job display•Python|Golang•Config Center api enable or disable•Ansible•pipeline•rolling update•jenkins job auto add and remove•Nexus•npm•maven•composer•pypi•docker•Gitlab•代码仓库命名规范•包的放置位置规范•Config Center•Config pull or push•SmokeTest•check service work fine or not•Monitor•enable monitor or disable when deploy•Log•log keyword monitor

阳光正好

前置条件(这块的知识可以看下前面的自动化运维基础建设文档)

确定分支模型统一工件库配置中心、注册中心代码质量平台code review代码规范检查单元测试用例测试部署

Demo(后续文档的以以下罗列为基准编写)

项目创建功能编写代码提交 [CI工具介入]•代码常规检查•自动化单元测试•依赖漏洞检查•功能自测Code Review [CI工具介入]合并发布分支 [CI工具介入]自动构建 + 关联工件库 [CI工具介入]•mvn | composer | npm | pip•vm•docker•多阶段构建•deploy release to nexus•自动部署 [CD工具介入] 滚动部署•将构建的包sync到rs机器上,以当前时间戳创建临时目录,原则上远程机器上保留历史的N次部署版本的war包,方便秒级回滚•这个构建后的包的获取方式有两种•一种是直接从nexus拉取releases包•如何从nexus上获取最新的releases的包•一种是每次部署的时候重新进行编译动作•同步的机器的信息从哪里获取?•CMDB的价值•disable slbnginxnginx health checkslbapidisable monitorstop servicecheck service statuscheck smoketestcheck portreplace packagestart servicecheck service statuscheck smoketestcheck portenable monitorenable slbnext machine step by step产品发布 [CI/CD工具介入]•APM监控•大网监控•人工观察线上质量 [CI工具介入]•日志告警•监控告警•质量修复、持续改进(循环第3步开始的内容)

总结

以上所列的Demo, 真正的落地是需要很多先决条件的,并不是单纯的把一个工具写出来就够了,约定大于配置,如果团队达不成共识,依旧各自为战,到头来依旧是OPS被项目赶着往前走,各种救火,我个人认为一套比较简单易用CI/CD系统这块是能够很大程度上解放OPS劳动力的一个大方向,以上所列仅代表个人观点,可能不够完善,适合自己的才是最好的。

本文分享自微信公众号 - 追马Linux(zhuima_k8s),作者:追马是我

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 从零打造自己的CI/CD系统|rollback注意事项​

    前面我们也说了,部署都是通过软链方式实现的,在全量发布的场景下,回滚的操作其中的一步就是把对应的软链切回上一个版本,这个相对来说复杂度没那么高。

    追马
  • jira7.8在centos7.4系统上报表服务不可用

    追马
  • [Jenkins]5分钟系列之五常用插件介绍

    一、准备工作 1.1、环境准备 软件版本功能jenkins2.95提供平台1.2、推荐阅读 分分钟部署安装jenkins 二、个人常用插件介绍 2.0、说明

    追马
  • 比例字体&等宽字体

    我们都知道等宽字体和比例字体的区别,就在于比例字体(Monospaced Font)即每个字母宽度是按一定比例自动调整的,而等宽字体(Proportional ...

    练小习
  • AQS共享模式与并发工具类的实现

    一行一行源码分析清楚 AbstractQueuedSynchronizer (三)

    Java技术江湖
  • cordova imagePicker 使用 原

     设置export class ContactPage {} 里面的默认的headface头像

    tianyawhl
  • lzugis—搭建属于自己的小型的版本控制SVN

    对于不了解SVN的同志们可以参考下“mh942408056”的这篇博文,SVN简介,链接地址为:http://blog.csdn.net/mh942408056...

    lzugis
  • 字体侵权怕不怕,免费商用来一波~

    很多小伙伴把字库的字体商用也是常有的,可能是没有版权意识,也可能是抱有侥幸心理,如果造成巨大经济损失,往往得不偿失。

    崔庆才
  • Java中的多线程

    1、 线程中的主要方法     a) isAlive() 判断线程是否还活着,即线程是否未终止     b) getPriority() 获得线程的优先级   ...

    lizelu
  • nginx切割日志脚本(python)

    因为以前没有做nginx日志分割,有时候想看日志的时候总是发现有十几G的甚至上百G的日志文件,于是就想使用python写个nginx日志分割(当然你也可以使用s...

    py3study

扫码关注云+社区

领取腾讯云代金券