Windows 上使用 Jenkins 构建并部署 springBoot 项目
在 安装并配置好 Jenkins 后,我们来构建并部署 springboot 项目,创建任务首先准备一个 SpringBoot 项目上传到上面凭据所在的 git 托管网站中,以便 Jenkins 可以正常拉取源码,新建 Item-选择【构建一个 Maven 项目】(如果这里没有这个选项,回到上篇安装插件 Maven Integration 并重启 Jenkins)
JDK
选择该项目构建时的 Java 版本(如果这里没有所需的版本,回到上篇配置配置 JDK、Maven、Git 环境,新增即可)
源码管理中
选择 Git,填写仓库地址,选择之前添加的凭证
构建触发器
这里先选择 Build whenever a SNAPSHOT dependency is built
如果需要自动构建则勾选对应 webhook,这里我们选择 Gitee webhook(如果没有这个选项需要安装 Gitee 插件),生成 Gitee WebHook 密码
使用浏览器打开码云对应的项目点开【管理】-【Webhook】,添加相关配置
构建环境
勾选 Add timestamps to the Console Output, 代码构建的过程中会将日志打印出来
Pre Steps
部署本地
点击 add-pre-build-step,选择【Execute Windows batch command】
添加批处理所在路径 xxx/stop.bat(先将批处理放置到对应目录中)
部署远程 Windows Server
点击 add-pre-build-step,选择【Send files or execute commands over SSH】
选择之前配置的 SSH Server 的远程 windows 服务器,在 Exec command 中添加批处理所在路径 xxx/stop.bat
使用 SSH Publishers 时一定要勾选【高级】-【Verbose output in console】, 输出日志便于出错时查看具体原因
这个批处理是在构建项目前执行的,一般是停止服务备份 jar 等,以下是笔者的 stop.bat(供参考):
@echo off
echo stop
set str_time_first_bit="%time:~0,1%"
if %str_time_first_bit%==" " (
set str_date_time=%date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%%time:~3,2%%time:~6,2%
)else (
set str_date_time=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
)
set port=8081
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do (
echo kill the process %%m who use the port
taskkill /pid %%m -t -f
goto start
)
:start
cd /d %~dp0
if not exist backup md backup
copy mybatis-sample-0.0.1-SNAPSHOT.jar backup\mybatis-sample-0.0.1-SNAPSHOT-%str_date_time%.jar.jar
exit
port=8081 是因为我的这个项目的运行端口是 8081
Build
在 Build 中,填写 Root POM 和 Goals and options,也就是构建项目的命令
一般 SpringBoot 项目的命令为
clean package -Dmaven.test.skip=true
Post Steps
构建后可以做的事情,这里我们选择【Run only if build succeeds】,即构建成功后触发
部署本地
点击 add-post-build-step,选择【Execute Windows batch command】,添加批处理所在路径
这个批处理一般是启动项目,以下是笔者的 start.bat(供参考):
@echo off
set BUILD_ID=dontKillMe
echo start
cd /d %~dp0
START javaw -jar mybatis-sample-0.0.1-SNAPSHOT.jar & exit
部署远程 Windows Server
点击 add-post-build-step,选择【Send files or execute commands over SSH】
选择之前配置的 SSH Server 的远程 windows 服务器,在 Exec command 中添加批处理所在路径 xxx/start.bat
Transfer set
- name:前面添加的 SSH Server
- Source files:要推送的文件
- Remove prefix:文件路径中要去掉的前缀
- Remote directory:要推送到目标服务器上的哪个目录下
- Exec command:目标服务器上要执行的脚本
部署远程 Linux
点击 add-post-build-step,选择【Send files or execute commands over SSH】,选择之前配置的 SSH Server 的远程 Linux 服务器
startup.sh(先将 sh 放置到对应目录中) 与 windows 版的 start.bat 不太一样(供参考)
#!/bin/bash
#export BUILD_ID=dontKillMe 这一句很重要,这样指定了,项目启动之后才不会被 Jenkins 杀掉。
export BUILD_ID=dontKillMe
#!/bin/bash -ile
project=mybatis-sample-0.0.1-SNAPSHOT.jar
pathName=mybatis-sample-0.0.1-SNAPSHOT
cd /root/home/mybatis-sample/
if [ ! -d "backup" ];then
mkdir backup
else
echo "backup is exist"
fi
rm -rf backup/$project
cp $project backup/$project
pid=`ps -ef | grep $dir$project | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
kill -9 $pid
echo "kill"
fi
echo "run"
BUILD_ID=dontkillMe nohup java -jar $project >/dev/null 2>&1 &
echo "run success"
如果远程执行遇到权限问题,执行 chmod +x startup.sh
构建设置
可以配置邮件通知等
构建后操作
可以添加很多操作
构建任务
点击 立即构建 可以开始构建任务,控制台可以看到 log 输出,如果构建失败,在 log 中会输出原因
构建成功后就可以浏览器中打开项目测试,至此便完成 jenkins 构建并部署 springboot 项目的流程~~~~
如果配置的自动构建的地址,则使用 idea 编写好代码提交到 git 后,Jenkins 便会自动构建项目
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: Java 设计模式 - 策略模式
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论