Mac Jenkins 部署 SpringBoot 应用到远程服务器
前言
本篇文章以本地 Mac 搭建的 Jenkins 为背景,实现本地通过 Jenkins 打包并传到远程服务器并重启 jar 包。
安装插件
首先我们需要在插件管理中安装 Publish Over SSH
插件
安装好后在系统配置中找到 Publish Over SSH
配置项
这里开头的 Passphrase 是通用密码,表示以下添加的服务器,若没填密码,则都是用该密码。
接下来配置服务器连接信息
然后点击高级,可以单独设置该服务器的密码:
设置完之后,点击保存。
全局工具配置
配置JDK
Centos 的 JDK_HOME 如果不知道在哪里,可以通过 echo $JAVA_HOME
命令查看
配置 maven
由于我之前没有在服务器上安装 maven,所以我这里选择自动安装
配置项目
在配置项目的构建环境中选择 Send files or execute commands over SSH after the build runs
这个选项表示在构建部分执行完之后,在执行上传到远程服务器等操作
参数解释
Source files
默认是 Jenkins workspace 的工作目录,就是当前项目的根目录,这个路径指向的是你想要上传到远程服务器的文件路径Remove prefix
去除上层目录,若不去除,Jenkins 会根据 Source files 的目录层层创建到 Remote directory 中Remote directory
要上传到远程服务器的目录,该目录是相对于系统配置中配置了该服务器的 Remote directory 开始查找。Exec command
在远程服务器中执行脚本,这个地方就可以用来写一些 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 &
参考文章
publish over ssh 实现 Jenkins 远程部署
Jenkins部署码云SpringBoot项目到远程服务器
[搭建完整jenkins发布环境(三)]Publish Over SSH插件使用详解及常见问题解析
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: