Windows 上使用 Jenkins 构建并部署 springBoot 项目

发布于 2024-07-07 03:32:24 字数 5315 浏览 9 评论 0

安装并配置好 Jenkins 后,我们来构建并部署 springboot 项目,创建任务首先准备一个 SpringBoot 项目上传到上面凭据所在的 git 托管网站中,以便 Jenkins 可以正常拉取源码,新建 Item-选择【构建一个 Maven 项目】(如果这里没有这个选项,回到上篇安装插件 Maven Integration 并重启 Jenkins)

new-job

JDK

选择该项目构建时的 Java 版本(如果这里没有所需的版本,回到上篇配置配置 JDK、Maven、Git 环境,新增即可)

源码管理中

选择 Git,填写仓库地址,选择之前添加的凭证

构建触发器

这里先选择 Build whenever a SNAPSHOT dependency is built

如果需要自动构建则勾选对应 webhook,这里我们选择 Gitee webhook(如果没有这个选项需要安装 Gitee 插件),生成 Gitee WebHook 密码

gitee-webhook

使用浏览器打开码云对应的项目点开【管理】-【Webhook】,添加相关配置

add-webhook

构建环境

勾选 Add timestamps to the Console Output, 代码构建的过程中会将日志打印出来

Pre Steps

部署本地

点击 add-pre-build-step,选择【Execute Windows batch command】

add-pre-build-step

添加批处理所在路径 xxx/stop.bat(先将批处理放置到对应目录中)

execute-windows-batch-command

部署远程 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,也就是构建项目的命令

build

一般 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 服务器

ssh-ser-ubuntu

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

构建设置

可以配置邮件通知等

构建后操作

可以添加很多操作

build-after

构建任务

点击 立即构建 可以开始构建任务,控制台可以看到 log 输出,如果构建失败,在 log 中会输出原因

start-build

构建成功后就可以浏览器中打开项目测试,至此便完成 jenkins 构建并部署 springboot 项目的流程~~~~

如果配置的自动构建的地址,则使用 idea 编写好代码提交到 git 后,Jenkins 便会自动构建项目

auto-build

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

欲拥i

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

月光色

文章 0 评论 0

咆哮

文章 0 评论 0

痞味浪人

文章 0 评论 0

宁涵

文章 0 评论 0

军弟

文章 0 评论 0

临走之时

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文