发布脚本使用

功能

  1. 打包部署应用
  2. 启动应用
  3. 关闭应用
  4. 重启应用
  5. 回滚到之前的某一版本
  6. 上述操作均支持多应用并发执行

命令行语法

usage: main.py [-h] [--tag TAG] --action {update,rollback,start,stop,restart}
               --apps APPS [--exclude_apps EXCLUDE_APPS] [--config CONFIG]

optional arguments:
  -h, --help            show this help message and exit
  --tag TAG             git的tag号
  --action {update,rollback,start,stop,restart}
                        发布动作
  --apps APPS           要发布的应用名称,
                        应用之间使用英文的逗号分隔
  --exclude_apps EXCLUDE_APPS
                        不要发布的应用名称,
                        应用之间使用英文的逗号分隔
  --config CONFIG       配置文件名称

用例

  • 使用本地代码打包部署所有应用到op环境

    1. 切换到发布脚本目录:cd ~/cana/script/deployer/new_deployer/src
    2. python main.py --config test.cfg --action=update --apps all
  • 使用本地代码打包部署所有应用到op环境,除了bankgate-server

    1. 切换到发布脚本目录:cd ~/cana/script/deployer/new_deployer/src
    2. python main.py --config test.cfg --action=update --apps all --exclude_apps bankgate-server
  • 使用本地代码打包部署指定应用到op环境

    1. 切换到发布脚本目录:cd ~/cana/script/deployer/new_deployer/src
    2. python main.py --config test.cfg --action=update --apps member-server,account-server
  • 重启op环境上的所有应用

    1. 切换到发布脚本目录:cd ~/cana/script/deployer/new_deployer/src
    2. python main.py --config test.cfg --action=restart --apps all
  • (一般在生产环境使用)回滚指定应用到某一版本

    1. 切换到发布脚本目录:cd ~/cana/script/deployer/new_deployer/src
    2. python main.py --config prod.cfg --tag=R_1.0.0 --action=rollback --apps member-server
  • 指定要发布应用的主机

    有的时候只需要发布某个主机上的应用,不需要发布所有主机,可以通过 --apps appName:host1 来实现。

    例子:

    1. 重启101上的vbam-front-biz
      python main.py --action restart --apps vbam-front-biz:192.168.192.101 --config prod.cfg --tag any
    2. 重启101和106上的vbam-front-biz。101和106之间使用下划线分隔。
      python main.py --action restart --apps vbam-front-biz:192.168.192.101_192.168.192.106 --config prod.cfg --tag any

      不支持的组合
      (1) 不支持all+ip : --apps all:192.168.192.101
      (2) apps参数指定主机后, exclude_apps 参数失效

如何配置新的应用

系统新增应用后,我们需要在config文件中做下配置,以member-server为例, 在test.cfg中增加如下块


[app:member-server]

# 打包命令
gradle_package_task = member:member-server:distZip
# 打包生成的文件路径,这是个相对路径, 相对于本地代码库根目录(我的电脑上是~/cana)
gradle_package_dest = member/member-server/target/distributions/member-server.zip
# 要发布到哪台主机
ip=192.168.1.7
# 发布文件通过scp命令传到服务器上的/tmp目录后,再执行下面命令拷贝到真正的执行路径
remote_deploy_command = cp /tmp/{package_name} /data/apps/member/member-server
# 启动命令
start_command = rm -rf /data/apps/member/member-server/{package_name_no_suffix};cd /data/apps/member/member-server && unzip {package_name} && cd {package_name_no_suffix}  && nohup /bin/bash bin/member-server >nohup.out 2>&1 &
# 预计的启动时间,指定的时间过了之后,才会验证进程是否启动
start_timeout = 10
# 获取进程pid的命令。 关闭时,可以通过这个命令获取到pid,再通过kill -9强杀。执行启动后,可以执行这个命令,验证进程是否启动
get_pid_command = ps aux | grep  /data/apps/member/member-server/member-server/lib | grep -v grep | awk {{'print $2'}}
# 部署时,将当前版本备份到{app_backup}目录
backup_command = mkdir -p {app_backup} && cp /tmp/{package_name} {app_backup}/{package_name}-{tag}
# 回滚时,从{app_backup}目录中选择指定版本的文件复制奥执行路径
restore_command = cp {app_backup}/{package_name}-{tag} /data/apps/member/member-server/{package_name}

results matching ""

    No results matching ""