Mac Jenkins 部署 SpringBoot 应用到远程服务器

Java
353
0
0
2022-08-07

前言

本篇文章以本地 Mac 搭建的 Jenkins 为背景,实现本地通过 Jenkins 打包并传到远程服务器并重启 jar 包。

安装插件

首先我们需要在插件管理中安装 Publish Over SSH 插件

Mac Jenkins 部署 SpringBoot 应用到远程服务器

安装好后在系统配置中找到 Publish Over SSH 配置项

Mac Jenkins 部署 SpringBoot 应用到远程服务器

这里开头的 Passphrase 是通用密码,表示以下添加的服务器,若没填密码,则都是用该密码。

接下来配置服务器连接信息

Mac Jenkins 部署 SpringBoot 应用到远程服务器

然后点击高级,可以单独设置该服务器的密码:

Mac Jenkins 部署 SpringBoot 应用到远程服务器

设置完之后,点击保存。

全局工具配置

配置JDK

Centos 的 JDK_HOME 如果不知道在哪里,可以通过 echo $JAVA_HOME 命令查看

Mac Jenkins 部署 SpringBoot 应用到远程服务器

Mac Jenkins 部署 SpringBoot 应用到远程服务器

配置 maven

由于我之前没有在服务器上安装 maven,所以我这里选择自动安装

Mac Jenkins 部署 SpringBoot 应用到远程服务器

配置项目

在配置项目的构建环境中选择 Send files or execute commands over SSH after the build runs

这个选项表示在构建部分执行完之后,在执行上传到远程服务器等操作

Mac Jenkins 部署 SpringBoot 应用到远程服务器

Mac Jenkins 部署 SpringBoot 应用到远程服务器

参数解释

  1. Source files
  2. 默认是 Jenkins workspace 的工作目录,就是当前项目的根目录,这个路径指向的是你想要上传到远程服务器的文件路径
  3. Remove prefix
  4. 去除上层目录,若不去除,Jenkins 会根据 Source files 的目录层层创建到 Remote directory 中
  5. Remote directory
  6. 要上传到远程服务器的目录,该目录是相对于系统配置中配置了该服务器的 Remote directory 开始查找。
  7. Exec command
  8. 在远程服务器中执行脚本,这个地方就可以用来写一些 shell 脚本,来关闭 SpringBoot 服务的端口,在重启 SpringBoot 服务。

当配置完之后,我们就可以构建查看效果了。

shell

这里贴出一些简单的 操作 Springboot 关闭、启动的脚本

# killPort.sh
#!/bin/bash

port=9004

lsof -t -i:$port

if [ $? -ne 0 ]; then 
    echo 该端口未运行
else 
    kill -9 `lsof -t -i:$port`

    if [ $? -ne 0 ]; then 
        echo $port端口关闭失败
    else 
        echo $port端口关闭成功
    fi
fi
# startSpringBoot.sh
#!/bin/sh
cd /home/call-show-api
chmod -R 777 app-1.0-SNAPSHOT.jar
java -Xms128m -Xmx128m -XX:PermSize=128M -XX:MaxPermSize=128M -jar app-1.0-SNAPSHOT.jar

可以将 shell 文件放到 /home/call-show-api 中,

然后在 Exec command 中写入

cd /home/call-show-api

sh killPort.sh

# nohup 不能在 sh 中用,否则会无法启动 Springboot 进程,答案是参考这篇文章的最后一段:https://www.jianshu.com/p/a7d7df97fe4b
nohup sh startSpringBoot.sh > /dev/null 2>&1 &