导航
- DevOps之一--自动化CI、CD基础概念
- DevOps之二--Docker快速安装Jenkins
- DevOps之三--Jenkins + Gitblit +Maven快速构建 springboot 项目
- DevOps之四--Publish over SSH远程部署
- DevOps之五-- Gitblit 触发 Jenkins
一、插件安装
-
首页 > 系统管理 > 插件管理
搜索Publish over SSH,直接安装。下图是我已经安装过的
image.png
二、配置Publish over SSH
1. 首页 > 系统管理 > 系统配置
-
步骤一安装插件完成之后,会在这里生产一个Publish over SSH的配置项。
image.png
2. 配置详解
- 配置详解.png
Passphrase:SSH的密码
使用用户名、密码SSH登录时,这里输入用户名密码。
使用私钥登录时,这里是私钥的密码。Path to key:私钥文件的路径
Key:私钥
Name:服务器名称(后续 步骤四 中会用到)
Hostname:服务器 IP
Username:登录服务器用户名
Remote Directory:登录服务器后的根目录,后面 Jenkins默认发送 Jar 到此目录下。
注意:账号密码登录和 私钥登录二选一即可
三、生成启动、停止Jar的 shell 脚本
1. 停用老版本stop.sh
#!/bin/bash
echo "=================stop SpringBoot DeviceLink================"
pid=`ps -ef | grep devicelink-2.1.jar | grep -v grep | awk '{print $2}'`
echo “旧应用进程id:$pid”
if [ -n "$pid" ]
then
kill -9 $pid
fi
2. 启动新版本 run.sh
#!/bin/bash
export JAVA_HOME=/usr/java/jdk1.8.0_191-amd64
jarName=devicelink-2.1.jar
chmod 777 ${jarName}
nohup ${JAVA_HOME}/bin/java -Xms1024M -Xmx1024M -jar ${jarName} > nohup.out &
- 注意:stop.sh 和 run.sh 的存放路径,步骤四 要用到此路径
四、配置构建任务触发远程部署
1. 首页 > 构建任务名称 > 配置 > Post Steps
可根据实际需求选择。
Run only if build succeeds:仅在构建成功时运行
Run only if build succeeds or is unstable:仅在构建成功或不稳定时运行
-
Run regardless of build result:无论构建结果如何运行
2. 远程部署配置详解
-
点击 Add post-build step > Send files or execute commands over SSH
远程部署详解.png Name:选择 步骤二 的服务器名
Source files:要部署的源文件。这里的路径相对于 Jenkins的工作路径
例如:
构建生成的JARJenkins_home/workspace/JenkinsBuild/devicelink/target/devicelink-2.1.jar
这里需要输入devicelink/target/devicelink-2.1.jar 或使用通配符** /devicelink-2.1.jar
Jenkins工作目录是Jenkins_home/workspace/JenkinsBuild/Remove prefix:移除指定前缀。
例如:
配置移除devicelink/target,JAR文件会发送到 /home/run/devlk/(步骤二的RemoteDirectory + RemoteDirectory)下,否则会发送到 /home/run/devlk/devicelink/target/ 下(不存在的路径会自动创建)。RemoteDirectory: JAR部署目录。
注意! 此目录是基于之前设置服务器时设置远程目录的,即这里的目录是位于服务器设置目录下的相对目录。最终部署目录 /home/run/devlk/ (步骤二的RemoteDirectory + 当前RemoteDirectory)Exec command:输入要执行的linux 命令
例如:
source /etc/profile
cd /home/run/devlk/
chmod 775 *.sh
BUILD_ID=devicelink
./stop.sh
./run.sh
echo "=============部署完成============="
3.【踩坑】部署目录
问题:JAR包发送到服务器的位置不对
解决方案:调整 步骤二 和 步骤四 的 RemoteDirectory,最终的目录是连个 RemoteDirectory 拼接起来的。
4. 【踩坑】shell 脚本不执行
问题:JAR 发送到服务器后,没有执行 Exec Command内的 linux 指令或 shell 脚本
解决方案:
1、在Exec command 区添加source /etc/profile,加上它是可以让.sh脚本执行。
2、在execute shell输入框中加入BUILD_ID=DONTKILLME,可防止jenkins杀死启动的进程。
3、给.sh 文件授执行权限 chmod 775 *.sh
4、注意.sh 脚本存放位置
-------------------------至此远程部署结束------------------------