我这个jenkins是安装在docker里面的,需要设置免密,注(在docker里面推送密钥到目标主机)
第一步是生成密钥对
执行推送命令ssh-copy-id -i /root/.ssh/id_rsa.pub root@ip
1.构建一个maven项目
2.配置git
3.指定分支
4.在pre steps设置builds
5.准备shell脚本
shell脚本如下
#!/bin/bash
# 服务名称
SERVER_NAME=ddsp-BE
# 源jar路径,mm打包完成之后,target目录下的jar包名称,也可选择成为war包,war包可移动到Tomcat的。
JAR_NAME=ruoyi-admin
# target打包生成jar包的目录
JAR_PATH=/var/jenkins_home/workspace/ddsp-be/ruoyi-admin/target
# 本地Jar包工作目录
JAR_WORK_PATH=/var/lib
# 远程服务器信息
REMOTE_SERVER=192.168.0.214
REMOTE_USER=root
REMOTE_DIR=/home/ddsp-BE
echo "查询进程id-->$SERVER_NAME"
PID=$(ps -ef | grep "$SERVER_NAME" | awk '{print $2}')
echo "得到进程ID:$PID"
echo "结束进程"
for id in $PID
do
kill -9 $id
echo "killed $id"
done
echo "结束进程完成"
# 复制jar包到执行目录
echo "复制jar包到执行目录: cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH"
cp $JAR_PATH/$JAR_NAME.jar $JAR_WORK_PATH
echo "复制jar包完成"
cd $JAR_WORK_PATH
# 修改文件权限
#chmod 755 $JAR_NAME.jar
# 启动Jar包
#java -jar $JAR_NAME.jar &
# 将Jar包通过scp复制到远程服务器
echo "将Jar包复制到远程服务器..."
scp $JAR_WORK_PATH/$JAR_NAME.jar $REMOTE_USER@$REMOTE_SERVER:$REMOTE_DIR/$JAR_NAME.jar
echo $JAR_WORK_PATH/$JAR_NAME.jar $REMOTE_USER@$REMOTE_SERVER:$REMOTE_DIR/$JAR_NAME.jar
echo "Jar包已成功复制到远程服务器的/home目录下"
#ssh $REMOTE_USER@$REMOTE_SERVER "cd $REMOTE_DIR && java -jar $JAR_NAME.jar"
#ssh $REMOTE_USER@$REMOTE_SERVER "cd $REMOTE_DIR && java -jar -Dspring.config.location=/home/ddsp-BE/application/application-druid.yml,/home/ddsp-BE/application/application.yml $JAR_NAME.jar"
ssh $REMOTE_USER@$REMOTE_SERVER sudo systemctl restart ruoyi-admin.service
ssh $REMOTE_USER@$REMOTE_SERVER journalctl -u ruoyi-admin.service