代码自动发布脚本

原创
2017/05/29 10:51
阅读数 431

公司目前还没有持续继承工具,每次项目发布都要手工操作,觉得老是在做重复工作,所以自己就写了个shell脚本来自动发布,相关工具包括:git、maven、maven assembly插件、ssh 、awk、xargs

#!/bin/bash

# 本地项目根目录
project_root='/Users/xx/project/xx-project/'
# 发布的maven模块名
deploy_module='xx-module'
# maven打包后的zip包名
package_name='xx.zip'
# 服务器上的发布路径
server_deloy_path='/data/xx-server'
# 解压后包名
unpackage_name='xx-server'
# 服务器IP
server_ip='10.17.2.88'
# 服务器端口
server_port=xx

cd $project_root

echo '开始更新代码'
git co xx_dev && git pull origin xx_dev

echo '开始maven打包...'
mvn clean package -P assembly-all -DskipTests=true

echo '开始上传包...'
scp -P ${server_port} ${project_root}/${deploy_module}/target/${package_name} root@${server_ip}:${server_deloy_path}

echo '开始删除旧包...'
command='cd '${server_deloy_path}' && rm -rf logs/ bin/ lib/ '${unpackage_name}
ssh -p ${server_port} root@${server_ip} ${command}

echo '开始解压包...'
command='unzip '${server_deloy_path}/${package_name}' -d '${server_deloy_path}
ssh -p ${server_port} root@${server_ip} ${command}

echo '开始复制解压后目录...'
command='cd '${server_deloy_path}' && cp -rf '${server_deloy_path}/${unpackage_name}'/* . && rm -rf '${unpackage_name}
ssh -p ${server_port} root@${server_ip} ${command}

echo '开始停止之前服务...'
command="jps -v | grep "${server_deloy_path}" |awk 'NR==1{print $1}'"
ssh -p ${server_port} root@${server_ip} ${command} | awk '{print $1}'| xargs ssh -p ${server_port} root@${server_ip} ' kill '
 
echo '开始启动服务...'
command='cd '${server_deloy_path}' && ./bin/start.sh'
ssh -p ${server_port} root@${server_ip} ${command}

echo '开始显示日志...'
ssh -p ${server_port} root@${server_ip} 'tail -f '${server_deloy_path}'/logs/xx.log' 

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部