使用 Jenkins部署 SpringBoot

本文介绍了如何使用Jenkins自动化部署SpringBoot应用。在公司规模较小的情况下,通过Jenkins可以简化运维任务,提高效率。主要内容包括Jenkins的配置,项目配置如源码管理与Post Steps,以及使用Bash脚本来停止、替换和启动应用的流程。需要的基础包括SpringBoot、Maven、Jenkins操作及基本的Linux知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为啥这么干

公司小,现阶段运维全是后台的事,然后,运维任务也不是不堪重负,只是想着节省一点时间来多琢磨琢磨业务需求的事,嗯,光明正大的节省操作步骤,光明正大的偷懒。

运行环境

CentOS 7
JDK 1.8_131
Jenkins 较新版本
Maven
Svn server/Git server

项目要求

  • 首先需要项目是 SpringBoot
  • 然后,SpringBoot 使用的内置容器是 Jetty(Tomcat 未测试,但是理论上是没问题的)
  • 使用 Maven 的打包格式是 jar

Jenkins

Jenkins 配置

jenkins 以 root 身份启动,或者把 workspace 和部署目录的拥有者改为 jenkins
workspace 目录 /home/munineyi/workspace
部署目录 /home/munineyi/Jenkins-in/
旧文件备份目录 /home/munineyi/Jenkins-in/backup

项目配置

源码管理

使用 Svn 或者 Git

Post Steps

增加Execute shell

#!/bin/bash
cd /home/munineyi/Jenkins-in/
echo "Execute shell Start"
sh stop.sh
sh replace.sh
echo "Execute shell Finish"
chmod 777 /home/munineyi/Jenkins-in/startup.sh
#!防止项目被杀死
BUILD_ID=dontKillMe nohup /home/munineyi/Jenkins-in/startup.sh

Bash 脚本

stop.sh

#!stop.sh
#!/bin/bash
JARFILE=Sandy-1.0-SNAPSHOT.jar

cd /home/munineyi/Jenkins-in
echo "Stopping SpringBoot Application for Sandy"
ls

pid=`ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ];then
  echo "kill -9 的 pid:"$pid
  kill -9 $pid
fi
echo "清除进程已完成"

replace.sh

 JARFILE=Sandy-1.0-SNAPSHOT.jar
 #!编译号的 jar存放地址
 file_path=/home/munineyi/workspace/target
 #!将现有的 jar 备份后,将新的 jar 替换
 file=/home/munineyi/Jenkins-in/Sandy-1.0-SNAPSHOT.jar

 if [ -f "$file" ];then
      mv /home/munineyi/Jenkins-in/Sandy-1.0-SNAPSHOT.jar /home/munineyi/Jenkins-in/backup/Sandy-1.0-SNAPSHOT.jar.`date +%Y%m%d%H%M%S`
 fi

 cp /home/munineyi/workspace/target/Sandy-1.0-SNAPSHOT.jar /home/munineyi/Jenkins-in/
 #!删除老旧的备份项目
 cd /home/munineyi/Jenkins-in/backup
 ls -lt | awk 'NR>5{print $NF}' | xargs rm -rf

startup.sh

 JARFILE=Sandy-1.0-SNAPSHOT.jar
 #!编译号的 jar存放地址
 file_path=/home/munineyi/workspace/target
 #!将现有的 jar 备份后,将新的 jar 替换
 file=/home/munineyi/Jenkins-in/Sandy-1.0-SNAPSHOT.jar

 if [ -f "$file" ];then
     mv /home/munineyi/Jenkins-in/Sandy-1.0-SNAPSHOT.jar /home/munineyi/Jenkins-in/backup/Sandy-1.0-SNAPSHOT.jar.`date +%Y%m%d%H%M%S`
 fi
 cp /home/munineyi/workspace/target/Sandy-1.0-SNAPSHOT.jar /home/munineyi/Jenkins-in/
 #!删除老旧的备份项目
 cd /home/munineyi/Jenkins-in/backup
 ls -lt | awk 'NR>5{print $NF}' | xargs rm -rf

整体思路

整体的思路比较简单,Jenkins 从 svn/git 上拔下来项目源码,然后通过 Maven 编译,编译好了生成 jar,接着运行预先写好的 Bash 脚本。

脚本的思路就不再重复了,代码上都有体现。

因为是简版的教程,所以需要一些基础,熟悉简单的 SpringBoot 配置,熟悉 Maven,熟悉简单的 Jenkin 操作,一定的 Linux 基础,以上。

### 使用 Jenkins 部署 Spring Boot 应用程序教程 #### 准备工作 为了成功使用 Jenkins 部署 Spring Boot 应用程序,需要完成以下准备工作: - 安装并配置好 Jenkins 和 Docker 环境。 - 创建一个可运行的 Spring Boot 工程,并确保其能够通过 Maven 或 Gradle 构建。 #### 配置 Jenkins Pipeline Jenkins 的核心功能之一是支持自动化构建和部署流程。可以通过定义 `Jenkinsfile` 来实现这一目标。以下是基于 Spring Boot 和 Angular 项目的示例说明[^1]: ```groovy pipeline { agent any stages { stage('Checkout') { steps { git 'https://github.com/your-repo/heroes-project.git' // 替换为实际项目地址 } } stage('Build') { steps { script { sh './mvnw clean package -DskipTests' // 假设使用的是Maven作为构建工具 } } } stage('Test') { steps { script { sh './mvnw test' } } } stage('Deploy') { steps { script { echo 'Building docker image...' sh 'docker build -t your-docker-image-name .' echo 'Pushing docker image to repository...' withCredentials([usernamePassword(credentialsId: 'docker-hub', usernameVariable: 'USER', passwordVariable: 'PASS')]) { sh "echo $PASS | docker login --username $USER --password-stdin" sh 'docker push your-docker-image-name' } echo 'Deploying application...' sh 'kubectl apply -f deployment.yaml' // 如果使用 Kubernetes 进行部署 } } } } } ``` 上述脚本展示了如何利用 Jenkins 实现从代码检出到最终应用部署的一系列操作。其中涉及的关键步骤包括但不限于源码拉取、依赖打包以及容器化处理。 对于更高级的功能扩展,比如自动更新 Build 版本号或者设置私有的 Docker 仓库,则可以参考额外资料进一步学习[^2]。 #### 关于 Dockerfile 创建合适的 Dockerfile 对于顺利执行镜像制作至关重要。这里给出一段简单的模板供参考: ```dockerfile FROM openjdk:17-jdk-slim AS builder COPY target/*.jar app.jar ENTRYPOINT ["java", "-jar", "/app.jar"] EXPOSE 8080 ``` 此文件指示了基础镜像的选择方式及其内部结构布局,从而便于后续集成至 CI/CD 流水线当中。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值