Jenkins--自动化构建和部署SpringBoot项目

一、实现目标

通过在Jenkins中创建流水线任务,编写流水线脚本以实现自动化构建和部署SpringBoot项目。流水线脚本主要实现以下几个步骤:

  1. Preparation:从gitee上拉取远程仓库的SpringBoot项目代码。
  2. Build:使用Maven对拉取的代码进行构建出jar包。
  3. Image:再用构建出来的jar包通过docker来制作镜像,并推送到registry私有镜像仓库。
  4. Deploy:从registry私有镜像仓库拉取镜像并在服务器上运行。

二、前期准备

(1)环境准备

需要准备台linux服务器或者虚拟机,用于项目的部署以运行。服务器上还需要提前安装好Maven、Git、JDK等。

(2)Jenkins插件安装

Jenkins要完成自动化构建和部署还需要依赖一些插件来共同完成,可以在插件管理里面搜索需要的插件进行安装,常用到的插件有以下几个:

  • Git:Git插件是必要的,因为它允许Jenkins与Git仓库进行交互,从而实现代码的自动拉取。
  • Maven Integration:用于在Jenkins中建立对Maven项目的支持,它能够识别Maven项目并执行Maven的生命周期命令,如clean, test, package, install等。
  • Publish Over SSH:通过SSH协议将部署文件推送到服务器上。
  • Pipeline: Stage View:通过一个可视化的界面来定义和管理他们的Jenkins流水线。

三、配置SSH服务器

配置SSH remote hosts的主要目的是允许Jenkins通过SSH连接到远程服务器,并在该服务器上执行命令或脚本。这通常用于在构建或部署过程中执行一些需要在远程服务器上完成的任务,比如运行测试、部署应用程序等。

(1)在Jenkins的主界面左侧点击"系统管理"菜单下的"系统配置"。

(2)滚动到"Publish over SSH"部分,点击"新增"按钮来添加一个新的SSH服务器配置。

(3)输入SSH服务器配置信息并保存。

三、全局工具配置

在左侧菜单"系统管理"中选择全局工具配置,进行Maven、Jdk、以及Git相关配置。

3.1 Maven配置及安装

(1)启动Jenkins容器时挂载到容器中的maven路径为:-v /usr/local/src/maven/apache-maven-3.9.6/:/usr/local/src/maven/。选择文件系统中的settings文件,然后把挂载到容器中的Maven目录下的setting文件的全路径添加到文件路径中。

(2)在Maven 安装里面,新增Maven,不要勾选自动安装,然后在MAVEN_HOME中配置挂载到容器中的Maven的路径。

3.2 Jdk安装

由于启动Jenkins容器时会指定容器中默认的jdk运行环境,直接使用默认的jdk环境就好,这里就不做修改。

3.3 Git配置

启动Jenkins容器时会指定容器中默认的git运行环境,这里也直接使用默认的git,不要勾选自动安装。然后在Path to Git executable里面的路径配置容器中具体的git执行文件,可以进入到容器中,通过命令which git来查看具体的git执行文件路径。

3.4 环境变量配置

在系统管理-系统配置-全局属性里面找到环境变量,将Maven的环境变量配置上去。

四、新建任务

在左侧菜单栏中,点击新建任务后跳转到任务创建页面,输入任务名称,选择任务风格后点击确定就能创建对应的任务。

五、任务配置

在任务配置页面进行任务的相关配置,这里主要是对流水线任务的pipeline脚本进行编写,这个脚本也是任务能否执行成功的关键。脚本内容主要分以下基本:

5.1 拉取代码

(1)使用jenkins自带的脚本生成器来生成拉取代码的语法。

(2)生成的拉取代码语法复杂到pipeline脚本中。

bash 复制代码
stage('Preparation') {
    steps {
        echo '准备拉取代码'
        git credentialsId: '1', url: 'https://gitee.com/xxxx/web_demo_freestyle.git'
        echo '代码拉取成功'
    }
}

(3)代码拉取成功后,拉取的代码会存放在jenkins_home目录下的workspace目录中对应的任务名命名的目录中。

5.2 构建代码
bash 复制代码
stage('Build') {
    steps {
    	// 先检查下Maven是否配置好
    	sh "mvn --version"
    	
        echo '准备构建代码'
        sh "mvn package -Dmaven.test.skip=true"
        echo '代码构建成功'
    }
}

代码构建成功后会jenkins_home目录下的workspace目录中对应的任务名命名的目录,在该目录中会存放构建项目的源码以及maven构建后生成的jar包,后续制作镜像时都是从workspace目录中对应的任务名命名的目录中去拉取的。

5.3 制作镜像

(1)在项目的根目录下创建个Dockerfile文件,并编辑内容如下:

bash 复制代码
FROM openjdk:8
MAINTAINER njh
ADD web_demo_freestyle-0.0.1-SNAPSHOT.jar ~/app.jar
EXPOSE 8088
ENTRYPOINT ["java","-jar","~/app.jar"]

(2)通过流水线语法中的片段生成器来生成上传jar包以及Dockerfile文件到服务器中。此时的工作路径是在workspace目录中对应的任务名命名的目录下。

bash 复制代码
cd /root/jenkins
chmod 777 Dockerfile
docker build -t 127.0.0.1:5005/app:v1 .
docker push 127.0.0.1:5005/app:v1

(4)将生成的语法复制打流水线脚本:

5.4 部署服务

(1)通过流水线语法生成启动镜像容器的命令。

(2)将生成的语法复制到流水线脚本中。

五、执行任务

(1)点击任务右侧的执行按钮开始执行这个任务,在构建历史中可以看到正在执行的任务。

(2)点击正在执行的任务编号,到任务信息页面,点击控制台输出就可以看到任务执行的日志信息。

(3)任务执行完成后,可以在日志中看到BUILD SUCCESS

(4)流水线任务执行完成后,查看服务器上项目是否正常运行。

相关推荐
志栋智能4 分钟前
超自动化安全:构建智能安全运营的核心引擎
大数据·运维·服务器·数据库·安全·自动化·产品运营
阿丰资源2 小时前
SpringBoot+Vue实战:打造企业级在线文档管理系统
vue.js·spring boot·后端
米高梅狮子2 小时前
08.CronJob和Service
云原生·容器·架构·kubernetes·自动化
0xDevNull2 小时前
Spring Boot 自动装配:从原理到实践
java·spring boot·后端
星恒讯工业路由器4 小时前
星恒讯工业生产自动化解决方案
运维·物联网·自动化·智能路由器·信息与通信
a8a3024 小时前
Laravel9.x新特性全解析
运维·spring boot·nginx
Agent产品评测局5 小时前
生产排期与MES/ERP系统打通,实操方法详解:2026企业级智能体与超自动化集成实战指南
运维·人工智能·ai·chatgpt·自动化
羑悻的小杀马特6 小时前
零成本搞定!异地访问 OpenClaw 最简方案:SSH 端口映射组网!
运维·服务器·人工智能·docker·自动化·ssh·openclaw
ai大模型中转api测评6 小时前
OpenAI再次定义生产力!GPT-image-2发布:当AI绘图学会思考
人工智能·gpt·自动化·api
aLTttY7 小时前
Spring Boot + Redis 实现接口防抖与限流实战指南
spring boot·redis·junit