全新发布脚本使用-2019-09-23
发布脚本使用
命令
执行顺序 create -> gray -> prerelease -> release -> complete
create
该命令用于创建 所发项目统一id 文件放在/data/gmdeploy/id_1810171539775289165
发布示例:
[superman@gate ~ ]$ gmdeploy create
id_1810261540544132405
[superman@gate ~ ]$
gray
创建项目现在前端模板是copy的形式,所以现在如果前端发布了,后台需要手动gray一下,也就是所有改动都是后台控制了
该命令使用在 单机 发布灰度阶段,灰度测试账户真实账户阶段,可以通过cancel取消灰度 发布信息 文件放在/data/gmdeploy/id_1810171539775289165
命令使用
参数:
-u M wrd # 发布人
-a O 123,334 # 新增灰度group_id
-d O 123 # 删除灰度group_id
M id_1810171539775289165 # 所发项目统一id
发布示例:
gmdeploy gray -u wrd id_1810171539775289165
gmdeploy gray -u wrd -a 222 -d 333 id_1810171539775289165
gmdeploy gray -u wrd -d 333 id_1810171539775289165
prerelease
该命令使用在 多机 预全量阶段,这个时间段会很短,验证没问题之后就需要release 注意:这个阶段不能取消灰度 注意:这个阶段不能修改分支信息了
命令使用
参数:
-u M wrd # 发布人
-a O 123,334 # 新增灰度group_id
-d O 123 # 删除灰度group_id
M id_1810171539775289165 # 所发项目统一id
发布示例:
gmdeploy prerelease -u wrd id_1810171539775289165
gmdeploy prerelease -u wrd -a 222 -d 333 id_1810171539775289165
gmdeploy prerelease -u wrd -d 333 id_1810171539775289165
release
该命令使用在 全量分支阶段
参数:
-u M wrd # 发布人
M gmdeploy_id_12345678 # 所发项目统一id
注意:
发布的后端分支,必须rebase master并且打成一个节点。否则发布不了。
发布时间是10:30 - 16:00 ,fix例外,通过fix前缀检查。
打成一个节点,会提示是否尝试合并代码。
release之后会锁定,直到complete命令完成。
示例:
gmdeploy release -u wrd gmdeploy_id_12345678
complete
将已全量的分支模板链接修改到前端master分支
参数:
-u M wrd # 发布人
M gmdeploy_id_12345678 # 所发项目统一id
示例:
gmdeploy complete -u wrd gmdeploy_id_12345678
list
列出当前正在运行的灰度分支简易信息
参数:
-p O station,manage,order,bshop,merchandise # 发布人
示例:
gmdeploy list
gmdeploy list -p station
clean
清理未使用的工程,清理的工程放在 /data/del_www
参数:
-u M wrd # 发布人
-t O 1 # 随意输入一个值,表示自动清理,用于每天定时清理使用
示例:
gmdeploy clean -u weiruduan
cancel
取消灰度
参数:
-u M wrd # 发布人
M # gmdeploy_id_12345678
示例:
gmdeploy cancel -u wrd gmdeploy_id_12345678
scp
同步gate机器上面的前端文件到 各机器
参数:
-p M # 前端模板:station_branch_frontend_more,station_branch_frontend_driver,station_branch_frontend_cds,station_branch_frontend_index,station_branch_frontend_mes,manage_branch_frontend_index,bshop_branch_frontend_index
-b M # 分支名
示例:
gmdeploy scp -p station_branch_frontend_more -b fix_lksjdg-sd
使用容器作为灰度时线上运行环境
灰度的时候加上参数 --with_docker
.
superman@gate:~$ gmdeploy gray -u liuwf -a 123 id_1909031567498653303 --with_docker
该参数只有gray时才有效,不加默认不使用容器作为运行环境
该参数只在第一次灰度时有效,一开始使用了什么运行环境后续的灰度会一直沿用
如何查看灰度分支的uwsgi日志
- uwsgi日志在宿主机的目录为 /data/logs/uwsgi/工程/分支/uwsgi_website.log, 如: /data/logs/uwsgi/station/feature/hug_docker/uwsgi.log
注: 工程为: station, bshop, manage, stock, sorting, templates, merchandise, order, account, async_task, 下同
- 也可通过容器看(有局限性)
bash
gmadmin@A-gray-worker-01:~$ docker exec -it [容器名] tail -f uwsgi.log
如何自定义配置
如果想添加自定义配置, 用 gmadmin 用户去 灰度(不是gate, 是gray机器) 的/data/config/工程/分支/local.json|yml|conf(不同的工程可能后缀名不同),添加相应的自定义配置文件,当使用gmdeploy gray 命令时会提示是否把这些配置加载到相应分支的容器里。
如: station工程分支 hotfix/test 要添加一个队列,就去 灰度机器 添加文件 /data/config/station/hotfix/test/local.yml, 内容 gm_task_queue: "queue"
添加文件/文件夹
- 不需要持久化到宿主机
在 Dockerfile
中添加
FROM ccr.ccs.tencentyun.com/guanmai/uwsgi:latest
WORKDIR /data/www/order
ADD ./requirements.txt ./requirements.txt
RUN pip3 install -r requirements.txt -i http://pypi.guanmai.cn/root/dev/+simple/ --trusted-host pypi.guanmai.cn --timeout 120
RUN mkdir -p /data/logs/order \
/data/logs/merchandise \
/data/logs/station \
/data/logs/bshop \
/data/logs/manage \
/data/logs/mqlib \
/data/logs/tools \
/data/logs/account \
/data/logs/celery_task \
/data/logs/gm_async_task \
/data/logs/stock \
/data/logs/sorting \
/data/logs/notify \
# 以下两行为添加行
/data/create_dir \
&& chmod 777 /data/create_dir
ADD . .
RUN chmod 777 .
CMD [ "run/entrypoint.sh" ]
- 需要持久化到宿主机
除了上述步骤以外,还要且通知 文峰 修改发布脚本
已知问题(未修复)
- [ ] 一个deploy_id灰度了多个工程, 当重新灰度时去掉某个工程, 其实并不会去掉这个工程的灰度, 只是隐藏了这个工程的灰度。现在暂时先禁用了这种方式。
- [ ] a灰度到了确认重启nginx那一步选择no,b灰度(a和b灰度的都是web或者service)一下也会使a灰度生效, 因为到确认重启nginx时nginx配置已经改了, 只是还没重启nginx服务。