使用Jenkins + svn + springboot自动构建jar包并自动打包在服务器上运行
本帖最后由 御坂主机 于 2024-7-6 16:09 编辑1. 概述
在现代软件开发中,持续集成和持续部署(CI/CD)已经成为必不可少的一部分。Jenkins作为开源的自动化服务器,可以帮助我们实现从代码提交到自动部署的一系列流程。本文将介绍如何使用Jenkins结合SVN和Spring Boot实现自动构建jar包并在服务器上运行。
1.1 为什么选择Jenkins
Jenkins是目前最流行的CI/CD工具,具有以下优势:
(1) 开源免费,社区活跃。
(2) 插件丰富,几乎可以集成所有常见的开发工具和服务。
(3) 配置灵活,可以根据实际需求进行高度定制化。
2. 环境准备
在开始之前,需要确保以下环境已经搭建完毕:
(1) Jenkins已经安装并运行。
(2) SVN服务器已经搭建并存有Spring Boot项目的代码。
(3) 目标服务器上已安装JDK和Maven。
3. 配置Jenkins
3.1 安装必要插件
在Jenkins中安装以下插件:
(1) Subversion Plugin:用于拉取SVN代码。
(2) Maven Integration Plugin:用于构建Maven项目。
(3) SSH Plugin:用于通过SSH将文件传输到远程服务器并执行命令。
3.2 新建Jenkins任务
在Jenkins中创建一个新的Freestyle项目,命名为`SpringBoot-AutoBuild`。
3.3 配置源码管理
在“源码管理”部分,选择“Subversion”并填写SVN仓库的URL和凭证。
3.4 配置构建触发器
选择“构建触发器”中的“轮询SCM”,设置轮询频率。例如,每5分钟检查一次代码变动:
H/5 * * * *
3.5 配置构建环境
选择“Provide Node & npm bin/ folder to PATH”,确保Jenkins能够找到Maven的执行路径。
3.6 配置构建步骤
添加一个“Invoke top-level Maven targets”构建步骤,设置如下:
Goals: clean package
3.7 配置构建后操作
添加“Send build artifacts over SSH”步骤,配置远程服务器信息,将构建生成的jar包传输到目标服务器。
4. 配置目标服务器
在目标服务器上,确保以下目录结构:
/opt/springboot-apps/
|-- app.jar
|-- start.sh
|-- stop.sh
4.1 编写启动脚本
在`/opt/springboot-apps/`目录下创建`start.sh`脚本:
#!/bin/bash
nohup java -jar /opt/springboot-apps/app.jar > /opt/springboot-apps/app.log 2>&1 &
4.2 编写停止脚本
在`/opt/springboot-apps/`目录下创建`stop.sh`脚本:
#!/bin/bash
pid=$(ps -ef | grep app.jar | grep -v grep | awk '{print $2}')
if [ -n "$pid" ]; then
kill -9 $pid
fi
5. 完成Jenkins配置
在Jenkins中,继续添加“Execute shell”构建后操作步骤,配置如下:
ssh user@remote_server 'bash /opt/springboot-apps/stop.sh && bash /opt/springboot-apps/start.sh'
6. 测试自动构建和部署
提交代码到SVN仓库,等待Jenkins轮询触发构建任务。观察构建日志,确认jar包成功构建并传输到目标服务器。检查目标服务器上的日志,确认Spring Boot应用正常启动。
7. 总结
本文详细介绍了如何使用Jenkins结合SVN和Spring Boot实现自动构建jar包并在服务器上运行的全过程。通过这样的自动化流程,可以大大提高开发和部署的效率,减少人为错误,提高系统的稳定性。希望本文的内容能够帮助大家更好地理解和使用Jenkins进行CI/CD操作。
------------------------------------------------------------------------------------------------------------------------------------------
========御 坂 主 机========
>> VPS主机 服务器 前沿资讯 行业发布 技术杂谈 <<
>> 推广/合作/找我玩TG号 : @Misaka_Offical <<
-------------------------------------------------------------------------------------------------------------------------------------------
页:
[1]