Jenkins中自动化部署Spring Boot项目的全过程

2025-01-06 15:50

本文主要是介绍Jenkins中自动化部署Spring Boot项目的全过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Jenkins中自动化部署SpringBoot项目的全过程》:本文主要介绍如何使用Jenkins从Git仓库拉取SpringBoot项目并进行自动化部署,通过配置Jenkins任务,实现项目的...

准备工作

本文将介绍如何使用 Jenkins 从仓库中拉取项目,经过打包、构建镜像、运行容器等步骤,最终将 Spring Boot 项目部署到服务器上供用户访问。并且当项目有更新时,自动触发 Jenkins 任务,实现自动化部署。

在开始之前,需要先创建一个 Spring Boot 项目,提供一些测试的接口。在确保项目正常运行的情况下,将项目推送到 Git 远程仓库。

Spring Boot 项目文件目录结构:

Jenkins中自动化部署Spring Boot项目的全过程

dockerfile 文件内容:

FROM bellsoft/liberica-openjdk-Debian:17.0.11-cds

LABEL maintainer="hayden"

RUN mkdir -p /demo/server/logs \
    /demo/server/temp

WORKDIR /demo/server

ENV SERVER_PORT=8080 LANG=C.UTF-8 LC_ALL=C.UTF-8 Java_OPTS="-Xms512m -Xmx512m"

EXPOSE ${SERVER_PORT}

ADD ./target/demo.jar ./app.jar

ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -Dserver.port=${SERVER_PORT} \
           -XX:+HeapDumpOnOutOfMemoryError -XX:+UseZGC ${JAVA_OPTS} \
           -jar app.jar

启动 Jenkins

使用 docker-compose 构建 Jenkins 容器。

文件树结构:

.
├── docker-compose.yml
└── jenkins
    ├── jenkins_config
    └── jenkins_home

docker-compose.yml 文件内容:

version : '3.0.01'
services:
  jenkins:
  container_name: jenkins
  image: jenkins/jenkins:lts-jdk17
  restart: unless-stopped
  ports:
    - "100China编程00:8080"
  volumes:
    # 数据卷挂载路径设置,将本机目录映射到容器目录 (下面映射可在容js器中执行宿主机docker命令)
    - "/usr/bin/docker:/usr/bin/docker"
    - "/var/run/docker.sock:/var/run/docker.sock"
    - "/usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7"
    #      - "/usr/local/bin/docker-compose:/usr/local/bin/docker-compose"  # 无效
    - "./jenkins/jjavascriptenkins_home:/var/jenkins_home"
    # ThinBackup插件备份jenkins配置存储目录
    - "./jenkins/jenkins_config:/var/jenkins_config"
    # 解决jenkins安装插件报错: An error occurred during installation: No such plugin: cloudb编程ees-folder
    # 下载地址  http://ftp.icm.edu.pl/packages/jenkins/plugins/cloudbees-folder/
    #      - "./jenkins/jenkins_home/war/META-INF/detached-plugins/cloudbees-folder.hpi:/var/jenkins_home/war/META-INF/detached-plugins/cloudbees-folder.hpi"
  environment:
    TZ: Asia/Shanghai
    LANG: en_US.UTF-8
    JAVA_OPTS: -Xmx512M -Xms512M -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:MaxNewSize=128m -Djava.util.logging.config.file=/var/jenkins_home/log.properties -Duser.timezone=Asia/Shanghai
  user: root # 使用root权限运行容器(docker中通过`-u root`命令)

启动 Jenkins 容器:

docker-compose up -d jenkins

开放 10000 端口,允许外部访问:

firewall-cmd --zone=public --add-port=10000/tcp --permanent
firewall-cmd --reload

配置 Jenkins

在浏览器中输入 http://[ip]:10000 访问 Jenkins。经过一系列设置,完成 Jenkins 的初始化。

系统管理->全局工具配置中配置 JDK,以 JDK 17 为例:

安装 URL:https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

Jenkins中自动化部署Spring Boot项目的全过程

在系统管理->全局工具配置中配置 Maven,以 Maven 3.9 为例:

Jenkins中自动化部署Spring Boot项目的全过程

下载完 Maven 后还需要修改镜像地址,避免出现下载速度过慢的问题:

# 进入 Maven 配置文件目录
cd jenkins/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/
# 编辑配置文件
vim maven-3.9.9/conf/settings.XML

# 替换原镜像地址
<mirror>
  <id>alimaven</id>
  <name>aliyun maven</name>
  <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>
</mirror>

::: tip 注意

使用 Jenkins 的安装方式中,会将软件安装到对应目录的下一层目录,例如 JDK 安装

到 jenkins/jenkins_home/tools/hudson.model.JDK/jdk-17/jdk-17.0.12,导致出现找不到 JDK 的问题。

解决方法:来到对应的目录中,将 JDK 的目录移动到上一层目录即可。

cd jenkins/jenkins_home/tools/hudson.model.JDK/jdk-17
mv jdk-17.0.12/* .
rm -rf jdk-17.0.12

:::

创建及配置任务

在 Jenkins 主页点击新建任务,选择构建一个 maven 项目,点击确定:

Jenkins中自动化部署Spring Boot项目的全过程

源码管理

在源码管理中选择 Git,填写仓库地址、凭证、分支等信息:

Jenkins中自动化部署Spring Boot项目的全过程

构建触发器

在构建触发器中选择 Generic Webhook Trigger,填写 Token,点击应用

Jenkins中自动化部署Spring Boot项目的全过程

Jenkins中自动化部署Spring Boot项目的全过程

这时来到 Git 远程仓库的 Webhook 配置页面,填写 Jenkins URL 和 Token,点击添加:

URL 格式:http://[ip]:10000/generic-webhook-trigger/invoke?token=Token

Jenkins中自动化部署Spring Boot项目的全过程

Jenkins中自动化部署Spring Boot项目的全过程

构建

由于 pom.xml 在项目根目录下,所以这边默认使用 pom.xml 进行构建:

Jenkins中自动化部署Spring Boot项目的全过程

构建后操作

勾选 Run only if build succeeds,填写 Shell 脚本

# 删除旧容器
docker rm -f my-spring-boot
# 删除旧镜像
docker rmi -f my-spring-boot:latest
# 构建新镜像
docker build -t my-spring-boot .
# 运行容器
docker run --name my-spring-boot -p 8080:8080 -d my-spring-boot:latest

Jenkins中自动化部署Spring Boot项目的全过程

点击保存,任务配置完成。

构建任务

在 Jenkins 主页点击任务名称,点击立即构建,可以看到正在构建的历史过程。点击构建历史中的任务,可以查看详细的构建日志:

Jenkins中自动化部署Spring Boot项目的全过程

多尝试几次,确保构建成功。

测试

php浏览器中输入指定 URL,可以看到项目已经部署成功。并且当 Git 仓库中的项目有更新时,Jenkins 会自动触发任务,实现自动化部署:

Jenkins中自动化部署Spring Boot项目的全过程

总结 

到此这篇关于Jenkins中自动化部署Spring Boot项目的文章就介绍到这了,更多相关Jenkins自动化部署SpringBoot项目内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于Jenkins中自动化部署Spring Boot项目的全过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1152945

相关文章

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Spring Cloud之注册中心Nacos的使用详解

《SpringCloud之注册中心Nacos的使用详解》本文介绍SpringCloudAlibaba中的Nacos组件,对比了Nacos与Eureka的区别,展示了如何在项目中引入SpringClo... 目录Naacos服务注册/服务发现引⼊Spring Cloud Alibaba依赖引入Naco编程s依

java导出pdf文件的详细实现方法

《java导出pdf文件的详细实现方法》:本文主要介绍java导出pdf文件的详细实现方法,包括制作模板、获取中文字体文件、实现后端服务以及前端发起请求并生成下载链接,需要的朋友可以参考下... 目录使用注意点包含内容1、制作pdf模板2、获取pdf导出中文需要的文件3、实现4、前端发起请求并生成下载链接使

Java springBoot初步使用websocket的代码示例

《JavaspringBoot初步使用websocket的代码示例》:本文主要介绍JavaspringBoot初步使用websocket的相关资料,WebSocket是一种实现实时双向通信的协... 目录一、什么是websocket二、依赖坐标地址1.springBoot父级依赖2.springBoot依赖

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短

大数据spark3.5安装部署之local模式详解

《大数据spark3.5安装部署之local模式详解》本文介绍了如何在本地模式下安装和配置Spark,并展示了如何使用SparkShell进行基本的数据处理操作,同时,还介绍了如何通过Spark-su... 目录下载上传解压配置jdk解压配置环境变量启动查看交互操作命令行提交应用spark,一个数据处理框架