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脚本中。

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

在这里插入图片描述

(3)代码拉取成功后,拉取的代码会存放在jenkins_home目录下的workspace目录中对应的任务名命名的目录中。
在这里插入图片描述

5.2 构建代码
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文件,并编辑内容如下:

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目录中对应的任务名命名的目录下。
在这里插入图片描述
在这里插入图片描述

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)流水线任务执行完成后,查看服务器上项目是否正常运行。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/834427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

部署JVS服务出现上传文件不可用,问题原因排查。

事情的起因是这样的,部门经理让我部署一下JVS资源共享框架,项目的地址是在这里 项目资源地址 各位小伙伴们做好了,我要开始发车了,全新的“裂开之旅” 简单展示一下如何部署JVS文档 直达链接 撕裂要开始了 本来服务启动的好好…

链式二叉树的基本操作1

1.概念回顾 讲二叉树的基本操作之前,我们回顾一下二叉树的概念 在讲树之前,我们的每讲一种数据结构,无外乎就是在讲它们的增删查改,但是在树这里,就有了不小变化。 2.结点的定义 既然是链式二叉树,那必须…

部署 Sentinel 控制台:实现流量管理和监控

序言 Sentinel 是阿里巴巴开源的一款流量防护与监控平台,它可以帮助开发者有效地管理微服务的流量,实现流量控制、熔断降级、系统负载保护等功能。本文将介绍如何在项目中部署和配置 Sentinel 控制台,实现微服务的流量防护和监控。 一、Sen…

深入理解Linux中TCP/IP协议栈的实现原理与具体过程

一、Linux内核与网络体系结构 在我们了解整个linux系统的网络体系结构之前,我们需要对整个网络体系调用,初始化和交互的位置,同时也是Linux操作系统中最为关键的一部分代码-------内核,有一个初步的认知。 1、Linux内核的结构 …

智能改写文章怎么做,3个方法让你轻松改出高质量文章

在如今的自媒体兴盛时代,内容创作对于自媒体人来说是必不可少的一项工作,然而,如何在保持内容原创性的前提下迅速生成高质量的文章变得尤为重要。智能改写文章的出现,为所有的自媒体人带来了一种全新的思路,它让大家在…

2024付费进群系统,源码及搭建变现视频课程(教程+源码)

前三节讲解搭建支付对接,后两节讲解一些引流变现的方法,还有一种变现就是帮人搭建这样的平台,因为全网都没有一套完整的视频教怎么搭建的,有也只是文字教程,一般新人根本看不懂,我视频实操演示,…

16-LINUX--线程安全

一。线程安全 线程安全即就是在多线程运行的时候,不论线程的调度顺序怎样,最终的结果都是 一样的、正确的。那么就说这些线程是安全的。 要保证线程安全需要做到: 1) 对线程同步,保证同一时刻只有一个线程访问临界资…

minio安装部署

MinIO 介绍 MinIO是一个对象存储解决方案,它提供了与Amazon Web Services S3兼容的API,并支持所有核心S3功能。 MinIO有能力在任何地方部署 - 公有云或私有云,裸金属基础设施,编排环境,以及边缘基础设施。 MinIO 安装…

【网络基础2】深入理解TCP协议:协议段、可靠性、各种机制

文章目录 1. TCP协议段格式1.1. 如何解包 / 向上交付1.1.1. 交付1.1.2. 解包 1.2. 如何理解可靠性1.2.1. 确认应答机制(ACK)1.2.2. 序号 与 确认序号 2. TCP做到全双工的原因2.1. 16位窗口大小2.2. 6个标记位 3. 如何理解连接3.1 连接管理机制3.1.1. 三次…

Web安全研究(九)

知识星球 首先推荐一下我们的知识星球,以AI与安全结合作为主题,包括AI在安全上的应用和AI本身的安全; 加入星球你将获得: 【Ai4sec】:以数据驱动增强安全水位,涵盖内容包括:恶意软件分析,软件安全,AI安全,数据安全,系统安全,流量分析,防爬,验证码等安全方向。…

IP地址证书的详细申请步骤

IP地址证书申请的条件有两个,一个是此IP必须是公网IP,另一个是IP的80和443端口必须允许短暂开放。满足这两个条件才能为其部署SSL证书。 IP地址ssl证书申请网址链接https://www.joyssl.com/certificate/select/ip_certificate.html?nid16 1 访问提供IP…

PyCharm安装详细教程

PyCharm安装详细教程 PyCharm简介及其下载网站 PyCharm是由JetBrains打造的一款Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。PyCharm提供了代码编辑、调试、语法高亮…

nature《自然》期刊文献怎么在家查看下载

nature《自然》期刊我们都知道,是世界上历史悠久的、最有名望的科学杂志之一。下载该期刊文献是需要使用权限的,如果你没有nature《自然》期刊的资源,又该如何获取呢?请看本文的经验分享。 一、先百度“文献党下载器” 在文献党下…

Faststone Capture:高效屏幕捕获神器评测【AI写作】

首先,这篇文章是基于笔尖AI写作进行文章创作的,喜欢的宝子,也可以去体验下,解放双手,上班直接摸鱼~ 按照惯例,先介绍下这款笔尖AI写作,宝子也可以直接下滑跳过看正文~ 笔尖Ai写作:…

PMP课程知识点很多,无法入手,该如何学习?

回顾整个学习过程,我花费了不少时间,但也学到了系统的项目管理知识,考试结果也让我感到满意。在学习过程中,我认为以下几点非常重要: 1、需要对课本进行整体阅读,以便对内容有一个整体印象; 2…

「MDN web 入门」学习笔记

目录 写在前面 1. MDN 简介 1.1 MDN 的主要特点 1.2 MDN 的主要功能 1.3 MDN 网页开发的指南 2. 安装基础软件 2.1 专业人士工具 2.2 初学者基本工具 3. 设计网站外观 3.1 计划 3.2 绘制草图 3.3 选定素材 3.4 文本 3.5 主题颜色 3.6 图像 3.7 字体 4. 处理文…

数字人捕捉、建模与合成

在感知系统中,我们与外部合作者一起创建逼真的 3D 人类,其行为可以像虚拟世界中的真实人类一样。这项工作在今天有许多实际应用,并且对于元宇宙的未来至关重要。但是,在感知系统中,我们的目标是科学的——通过重现人类…

MySQL——系统变量

使用 #最大连接用户数 select MAX_CONNECTIONS; #临时存放构成每次事务的SQL的缓冲区长度 select BINLOG_CACHE_SIZE; #SQL Server的版本信息 select VERSION; 查询结果

Python实现一个简单的计算器

简单版本 使用 Python 的 Tkinter 模块来实现一个简单的图形化计算器。以下是一个基本的示例代码 示例效果 代码源码 import tkinter as tkdef button_click(number):current = entry.get()entry.delete(0, tk.END)entry.insert(0, current + str(number))def button_clear()…

ICode国际青少年编程竞赛- Python-1级训练场-变量的计算

ICode国际青少年编程竞赛- Python-1级训练场-变量的计算 1、 a 2 for i in range(4):Spaceship.step(a-1)Dev.step(a)Dev.step(-a)a a 12、 a 2 for i in range(4):Dev.step(2 a)Dev.step(-a)Dev.turnRight()a a 13、 y 4 for i in range(3):Dev.step(y)Dev.turnRigh…