DevOps之四--Publish over SSH远程部署

导航

  • 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 脚本存放位置

-------------------------至此远程部署结束------------------------

你可能感兴趣的:(DevOps之四--Publish over SSH远程部署)