环境说明
开发机: mac 系统 开发服务器: ubuntu 20.4 开发服务器目录config
/www/websites/my: 服务器上项目 目录 /www/websites/my/backup: 服务器上项目打包文件备份存储 目录 /www/websites/my/config: 服务器上项目配置 文件目录 /www/websites/my/logs: 服务器上项目日志 文件目录 /www/websites/my/static: 服务器上项目静态 文件目录
自动脚本
文件另存为deploy.dev.sh ,设置可执行权限chmod +x deploy.dev.sh ,使用时候执行./deploy.dev.sh 即可 需要你配置如下几个
编译后的文件名 远程服务器的部署目录 远程服务器的项目文件名(替换文件名称) 服务器ip 服务器账号 服务器密码
#!/usr/bin/env zsh
DEPLAY_ENV=dev
DIR=$(cd $(dirname $0); pwd)/../
cd $DIR
PROJECT=$(pwd)
BUILD_FILE=fox.jar
BUILD_PANTH=${PROJECT}/build/libs
BUILD_PANTH_FILE=${BUILD_PANTH}/${BUILD_FILE}
DEPLAY_PANTH=/www/websites/
DEPLAY_FILE=fox.jar
VERSION=1.0.0
SERVER_HOST=服务器ip
SERVER_PORT=22
SERVER_USER=root
SERVER_PASSWORD=123456
date=$(date +%Y%m%d%H%M%S)
if [ -z "$VERSION" ]; then
echo "版本号不能为空"
exit 1
fi
if [ "$VERSION"x = "0.0.0"x ]; then
echo "版本号不能为 0.0.0"
exit 1
fi
if [ ! -d "${PROJECT}" ];then
echo ${PROJECT}
echo "项目不存在"
exit 1
fi
./gradlew build -x test
if [ ! -f "${BUILD_PANTH_FILE}" ]; then
echo "$BUILD_PANTH_FILE 编译后文件不存在"
exit 1
fi
echo "复制文件到远程服务器"
expect <<EOF
#设置超时
set timeout 10
#复制
spawn scp -r $BUILD_PANTH_FILE $SERVER_USER@$SERVER_HOST:$DEPLAY_PANTH/backup/$BUILD_FILE-$date
expect {
"yes/no" { send "yes\n";exp_continue }
#密码
"*assword*" { send "$SERVER_PASSWORD\n" }
}
expect "]#" { send "exit\n" } expect eof
EOF
echo "复制文件到远程服务器:成功"
echo "远程服务器,启动程序"
expect <<EOF
set timeout 10
#登陆
spawn ssh $SERVER_USER@$SERVER_HOST
expect {
"yes/no" { send "yes\n";exp_continue }
#密码
"*assword*" { send "$SERVER_PASSWORD\n" }
}
#列表
expect "]#" { send "/usr/bin/ls -l $DEPLAY_PANTH/backup/$BUILD_FILE-$date\n" }
#替换原文件
expect "]#" { send "/usr/bin/cp -rf $DEPLAY_PANTH/backup/$BUILD_FILE-$date $DEPLAY_PANTH/$DEPLAY_FILE\n" }
#执行启动脚本
expect "]#" { send "/usr/bin/bash $DEPLAY_PANTH/run.sh\n" }
#推出
expect "]#" { send "exit\n\n" } expect eof
EOF
echo "远程服务器,启动程序:启动成功"
echo "操作成功"
|