CICD自动化发版系统设计简介

 第一篇。

版本迭代是每一个互联网公司必须经历的,尤其是中小型公司,相信不少人踩到过很多坑。接下来的一系列文章将介绍我设计的自动化发版系统!

很多公司没有把配置独立出去,代码的构建、发版通过一个Jenkins job实现,我认为这样很不好。弊端如下:

  • 如果你有N个环境,你将会有N次编译、N次配置、产生N个包、发布N次......;
  • 配置变更困难,可读性比较差;
  • 版本发布总体时间长等等。

事实上我们需要: 

  • 一次构建多次发布;
  • 具备包仓库,长期存储并备份成品包;
  • 具备配置管理系统,实现集中管理配置且维护简单;
  • 具备基本的回滚(备份)机制。

我的解决方案是:紧紧围绕Jenkins+Gitlab+Ansible建设发版系统,通过Jenkins框架集成Gitlab、Ansible、sonar等第三方重要服务,同时引入配置管理系统(百度开源的Disconf),引入成品包仓库(通过nginx+samba实现),再通过Ansible调度发布及回滚脚本。

大致流程如下图所示:

说明:

  • Jenkins时刻监听Gitlab代码变化,当有研发人员向Gitlab提交代码时,Jenkins会自动触发构建、编译并打包;
  • 再通过shell脚本自动将打好的包上传到成品包仓库;
  • 发版人员从成品包仓库选取要发版的包上传到Jenkins发布job,执行一键发布;
  • 业务代码在启动过程中会自动从Disconf系统中拉取配置完成配置并成功启动。
  • 整个流程看起来通俗易懂,但要注意一些关键点要具备提高可用性,比如:构建及发布任务要做成集群、要具备回滚机制等等。下面请看详细的工作流程图:

说明:

  • 整个CICD最关键部分由Jenkins构成,Jenkins在这里主要充当平台作用,Jenkins由master/slave节点组成,master负责调度各个slave节点,真正干活的是各个slave节点。在这里,CI部分由2个jenkins slave节点组成,CD部分由2个Jenkins slave节点组成,CI与CD节点复用以高效利用资源;
  • 当Gitlab有代码变动时,Jenkins CI节点会自动触发构建、编译并打包,然后将打好的包自动上传到成品包仓库;
  • 成品包仓库主要由samba充当,发版人员可以添加samba磁盘映射到自己电脑上,发版的时候可以从samba仓库上选取要发版的包上传到Jenkins CD任务上;
  • 通常测试环境与生产环境网络是物理隔开的。如果要发版测试环境,则Jenkins会调用内网Ansible服务,Ansible调用相关发布脚本实现发版,在发版过程中,代码服务会自动从测试环境Disconf下载并加载配置完成配置;同理,生产环境发版也是同样的流程。

值得一提的是,这套发版系统在投入使用之前需要做一些标准化操作,比如:代码包命名如何规范,CI/CD任务名称如何规范,成品包仓库中的包路径如何定义,代码配置如何独立等等,免不了一些沟通协调。总体感觉:自动化不难,“难的”是标准化的规划及落地。

在稍后的几篇文章中我将持续更新,努力将每一步都3D式的呈现在大家面前。

 

敬请期待~

 

转载于:https://www.cnblogs.com/wellful/p/10604151.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CICD是指持续集成、持续交付,它通过自动化的方式完成软件开发的不同环节,其中包括自动化完成代码编译、测试、构建、打包等步骤,并最终通过自动化的交付流程将软件部署到生产环境。因此,CICD自动完成、自动交付脚本就是完成这些自动化流程所使用的脚本工具,通过这些脚本工具可以实现软件开发过程的高度自动化和流程化,提高软件开发的效率和质量。 ### 回答2: CI/CD是指持续集成/持续交付(Continuous Integration/Continuous Delivery)的缩写。它是一种软件开发实践方法,通过自动化的方式,将代码修改和集成的过程与代码交付和部署的过程紧密结合起来。 CICD自动完成自动交付脚本是指通过编写脚本来实现CICD自动化过程。这个脚本可以自动完成代码修改、集成、构建、测试、部署等一系列的任务,从而实现持续集成和持续交付。 首先,脚本可以监听源代码管理系统,如Git,当有代码提交时触发自动化流程。然后,它会自动拉取最新的代码,并进行代码构建。构建的过程中,脚本可以自动进行代码检查、编译、打包等操作,确保代码的质量和可用性。 接下来,脚本可以自动进行单元测试、集成测试、回归测试等各种测试,以确保代码的稳定性和功能的正确性。如果测试通过,脚本可以将构建好的代码部署到目标环境中。部署的过程中,脚本可以自动完成数据库迁移、配置文件更新等一系列操作,确保代码能够正确运行。 最后,脚本可以自动通知相关人员,如开发者、测试人员或运维人员,关于代码构建和部署的状态和结果。这样,团队成员可以及时了解代码变更的情况,做出相应的反馈或调整。 CICD自动完成自动交付脚本的好处是提高了软件交付的效率和质量。它减少了人工操作和手动测试的错误和风险,提高了工作效率和代码可靠性。通过自动完成和自动化的方式,CICD脚本可以让团队更加专注于软件开发和功能实现,减少了繁琐的重复性工作,提高了团队的整体效能。 ### 回答3: CICD(持续集成和持续交付)是一种软件开发流程的方法论,旨在通过自动化的构建、测试和部署流程来实现快速、高质量的软件交付。CICD自动完成和自动交付脚本是支持这种流程的关键工具。 CICD自动完成脚本用于实现自动化的构建、测试和部署过程。通过编写这些脚本,我们可以自动化构建工具的安装和配置、项目的编译和打包、自动化测试的运行以及构建产物的存储和备份等步骤。这些脚本可以根据开发环境的不同自动选择适当的工具和设置,并能够处理各种可能出现的错误和异常情况。这样一来,开发人员就可以将更多的时间和精力投入到核心代码的开发上,而不必手动执行繁琐的构建和测试任务。 CICD自动交付脚本用于实现软件的自动部署和交付。通过编写这些脚本,我们可以自动化部署工具的安装和配置、服务器的环境搭建、应用程序的部署和启动、数据库和其他依赖项的配置等步骤。这些脚本可以根据不同的环境(如开发、测试、生产)自动选择正确的配置和参数,并且能够处理各种可能出现的错误和异常情况。这样一来,我们可以通过简单的命令或触发器,自动将最新的可部署版本交付到目标环境,大大提高了软件交付的效率和可靠性。 总之,CICD自动完成和自动交付脚本是支撑CICD流程的关键工具,通过自动化构建、测试和部署等环节,极大地提高了软件交付的效率和质量。这些脚本解放了开发人员的双手,让他们更专注于核心的开发工作,同时也减少了人为因素对软件交付的影响,提高了团队的整体效率和合作效果。一个完善的CICD流程需要结合合适的工具和配置,以及团队成员的积极配合和持续改进,才能够实现高效、高质量的软件交付。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值