#前提是设置了服务器SSH免密登录
# WORKSPACE变量是jenkins环境内置的
REMOTE_USER="root" # 远程服务器用户名,真实环境不建议直接使用root
REMOTE_HOST="myserver" # 远程服务器地址
REMOTE_DIR="/data/project/backend/os" # 远程服务器上的目标目录
SCRIPT_NAME="app.sh" # 启动程序脚本
echo "start copy to my server..."
# 拷贝到远程服务器,由于是增量更新,只拷贝覆盖平时开发的包
scp $WORKSPACE/athena-application/target/lib/my* $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/lib/
scp $WORKSPACE/athena-application/target/athena-application-3.1.1.2.jar $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR
# 检查文件是否成功上传
if [ $? -ne 0 ]; then
echo "Error: File copy failed."
exit 1
fi
echo "copy finish..."
# 连接到远程服务器执行备份与启动等脚本
current_time=$(date +"%y%m%d%H%M")
echo "Executing remote script..."
ssh $REMOTE_USER@$REMOTE_HOST << EOF
cd $REMOTE_DIR
mv app.jar athena-application-$current_time.jar
mv athena-application-3.1.1.2.jar app.jar
./$SCRIPT_NAME restart
EOF
# 检查远程脚本执行结果
if [ $? -eq 0 ]; then
echo "Remote script executed successfully."
else
echo "Error: Remote script execution failed."
exit 1
fi
注意:这里直接使用了 ssh root@myserver 就连接登录进去了是因为前提进行了 hosts 解析配置与 ssh免密登录操作