mengalong / canary

Canary release tools

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Canary

金丝雀,意为分级发布工具。

用途

用于更新仓库中的代码到生产环境,本工具提供了如下基本功能:

  • 根据仓库代码与本地目标路径代码进行比较,找到不一致的文件列表
  • 提供diff预览功能,查看不一致文件的修改内容
  • 一键更新所有涉及到的文件
  • 一键回滚到上一个版本

用法

  1. 部署本项目代码到目标服务器的任意路径
  2. 在本项目的update/data 目录中,clone目标仓库代码
  3. 修改update/bin/conf 中的几个变量
data_path_pre: 代表的是仓库代码在本地的路径
dest_path_pre:代码在服务器上的目标部署路径
ignore: 需要忽略的文件正则,多个正则用 | 分割
  1. 每次更新之前,首先提交代码到远程仓库,然后在本地的 data_path_pre 路径下的项目目录中执行git pull更新远程代码到本地
  2. 之后分别执行
	bash 0_get_list.sh: 获取存在差异的文件列表
	bash 1_get_diff.sh:查看待更新文件的差异内容
	bash 2_update.sh:执行更新
  1. 更新完成后,在update/log 目录下会生成更新日志,每个更新日志以update.$timestamp记录
  2. 如果需要回滚代码,则找到上一次更新的时间戳,在log目录下可以看到,执行:bash rollback.sh $timestamp 即可

TODO:

当前该脚本只是一个简单的代码备份、发布、回滚工具。理想模式的发布系统应该包含:

  1. 与代码仓库自动关联,仓库有更新时即可自动生成发布任务
  2. 支持系统在任何时间回滚到任何一个版本
  3. 单次更新支持平台化分级发布,即:按照自定义的批次进行分批发布,批次间、批次内可以自由控制并发度以及自动检查
  4. 文件diff平台化友好展示...
  5. 支持大规模集群的管理发布 etc...

未来如果有时间,可以实现更理想的平台化方案

About

Canary release tools

License:Apache License 2.0


Languages

Language:Shell 100.0%