Skip to content

全新发布脚本使用-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服务。