乐趣区

DevOps-基于Walle的小型持续集成实战一概述

该文章用于概述一个小型持续集成环境的搭建的方案

什么是持续集成?

持续集成作为当今软件开发实践,可以简单理解为团队开发相对频繁的集成他们的工作,一般让每个成员每天至少集成一次,而这回造成每天会有多次的版本发布。于是我们需要应用到自动化的构建模式(编译发布到测试监控),从而尽早的发现集成中的错误。

持续集成流程

常用生态

  • 仓库管理

    • Git 代码仓库 (Gitlab,Gitee)
    • Nexus 包私服库
  • 构建工具

    • Jenkins 热门 - 构建发布工具
    • Ansible 配置管理工具
    • Walle 构建发布工具
  • 运行环境

    • Linux 系统
    • Docker 容器
    • Nginx 负载均衡域名解析
  • 构建环境

    • maven
    • nodejs
    • python
    • java

经典流程

手工发布 – Java SpringBoot 应用到一台服务器

特征:一个环境,一台服务,少量应用

  • 1、Maven 打包 mvn clean compile package -Dmaven.test.skip=true
  • 2、放到服务器 scp -r xxx.jar username@192.168.0.1:/data/app/ or FTP 工具
  • 3、登录服务器 ssh root@192.168.0.1
  • 4、停用旧应用 ps -ef | grep java -> kill -9 xxxx
  • 4、启用新应用 nohup java -server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -jar /data/app/xxx.jar > /data/app/xxx.log 2>&1 &

手工发布 – React-Antdpro 应用到一台服务器

特征:一个环境,一台服务,少量应用

  • 1、Npm 打包器 npm run build
  • 2、放到服务器 本地压缩 dist.rar -> scp -r dist.rar username@192.168.0.1:/data/nginx/ or FTP 工具 -> 解压内容
  • 3、登录服务器 ssh root@192.168.0.1
  • 4、停用旧应用
  • 5、启动新应用 https://segmentfault.com/a/11…

延伸问题

⚠️ 在低频次小规模更新下,该方案可以在用最少的资源和适度的时间花费上得到平衡。如果出现 多人协作,发布频繁,多台服务,多套环境我们该如何管理这些内容?

多人协作,如何代码管理?以及相关依赖引用?

以下方案供选择,解决代码管理问题(他们比 svn 拥有更灵活更开放的管理手段)

  • Gitlab 公网 / 私服
  • Gitee 国内较好的代码仓库管理服务
  • Github

https://git-scm.com/

以下方案供选择,解决通用模块引用以及外网拉取依赖缓慢问题

  • Nexus 包私服库,包含众多类型的包,例如 maven

发布频繁,如何自动化脚本替换人工作业?

以下方案供选择(他们可以将一系列的执行脚本在服务端执行,一次脚本维护完毕则通过简单的触发即可完成各种功能)

  • Jenkins 流行且主流的一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。https://jenkins.io/zh/
  • Walle 简化版 python 完成的类 Jankins 软件。http://www.walle-web.io/

多台服务,如何快速批量多端构建执行?

  • Ansible 配置管理工具集包含 连接模块,多任务执行,监控模块,插件功能

    • https://www.ansible.com/
    • https://www.cnblogs.com/gzxbk…

多套环境,该如何服务隔离快速部署?

  • Docker 容器引擎
  • Docker-Compose 单主机容器编排工具
  • Docker Swarm 多主机容器编排工具
  • Kubernetes(k8s)更为强大的多主机容器编排工具

https://blog.csdn.net/notsalt…

服务异常,如何能快速定位和发现?

  • Zabbix 硬盘,内存,CPU 采集监控与预警

下阶段会基于 Walle 讲解如何搭建一个小型的持续集成环境

退出移动版