乐趣区

DevOps-基于Walle的小型持续集成实战七总结

该文章旨在描述从零开始搭建环境,中间遇到的问题以及最终的经验总结。

当前版本针对于 2.0 docker 安装版

概要

整体流程贯通,基本可以达到实用级别。满足 2 - 5 台服务器,少量的应用部署是完全可以的,但达到一定规模之后则 Walle 和 Jenkins 的差异马上就出来了,Walle 的环境管理,服务器管理,上线通知,和各插件集成在这些巨大差距看来难以逾越。而除开 Walle 本身,整套设计还有不少可以优化的点,例如编译脚本,容器部署等。

Walle 仍旧有很多需要提高的地方

  • 发布构建时(部署上线)服务器卡顿严重,基本不可以多项目发布。
  • 构建队列,不能按队列同时发布多个任务逐一执行
  • 并行构建,不能同时执行通过任务
  • 自定义脚本,针对非 git 的项目不友善
  • 缺少构建参数,目前仅有 git 的分支号和提交号,有时候需要传入额外参数作用于启动命令中
  • 环境变量,安装较为困难,docker-compose-python 中对各环境变量支持不好。(例如 angular-cli,使用起来相当别扭)

该实战中 – 编译脚本可以优化的地方

  • 重复脚本多,可以使用其他方式进行脚本管理,并相互引用。例如直接运行 shell,groovy,python 等。在环境准备时从 git 拉去脚本库
  • 远程包发布,在无 Ansible 加持的情况下,远程多服务器发布的效率不可恭维(虽然比人工强)。

该实战中 – 容器部署可以优化的地方

  • 日志查询难,运行时需要修改为 sh 方式启动。nohup 无法直接使用,导致查询日志时候需要 docker log 等命令,学习成本较高
  • 服务监控难,docker-compose 无法胜任大规模集群机器的监控(还是需要 k8s 啊)

该实战中 – 经验分享

  • Docker 内 openjdk8 运行时区不一致:可以直接同宿主机映射时间命令;然后服务启动设置额外参数(参考文章五,java 部署篇)
  • Docker-compose 启动,则必须用 Docker-compose 命令停止;否则 docker 网络无法关闭会超出 30 个上线

后续

  • 想当初“docker 学起来真麻烦,我又没那么多机器,不管怎么我也不愿意用这些东西”,现在 ===>“Docker,真香!”
  • PS:最近可能会开一章 k8s + SpringCloud 部署实战
退出移动版