自动化发布系统

问题

  1. 一次发布涉及多个模块:op、门户、usercenter等
  2. 同样的代码要发布到不同的环境,要保证一致性
  3. 不同的环境可选择不同的测试数据(数据库配置)

解决思路

参考:汽车之家自动化发布系统

定义

从代码checkout、打包、部署这样一个完整的过程,成为一次发布。

思路

后台提前配置发布任务,包含模块列表、路径等信息
通过简单的UI完成模块版本、测试环境和测试数据的选择
(调用配置管理工具接口生成配置)
调用Jenkins API进行打包
调用SaltStack, Ansible等自动化运维工具发布代码

优点

一次配置,多次部署
全流程自动化,无手工参与
将打包和发布过程分离,保证不同环境间代码的一致性
解决测试数据可配问题
可查看、回滚历史发布,便于回溯问题

方案修正

原方案过于复杂了,现在没有这样的需求。
可以通过修改Jenkins,选择发布环境,调用Ansible修改配置这样的简单方式实现。

思路

在Jenkins中增加构建参数,选择发布到哪台主机。
发布后执行ansible命令,修改目标主机的配置文件。
(所有配置在ansible端做集中管理)

欢迎打赏!