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.rhkb.cn/news/322984.html

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

相关文章

浅析扩散模型与图像生成【应用篇】(二十二)——DreamBooth

21. DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation 本文提出一种根据少量样例图片来对文生图模型进行微调的方法,从而可以生成包含样例物体,但风格、姿态、背景都可以任意修改的图片。现有的文生图模型都是需要…

CCF-Csp算法能力认证, 202303-1重复局面(C++)含解析

前言 推荐书目,在这里推荐那一本《算法笔记》(胡明),需要PDF的话,链接如下 「链接:https://pan.xunlei.com/s/VNvz4BUFYqnx8kJ4BI4v1ywPA1?pwd6vdq# 提取码:6vdq”复制这段内容后打开手机迅雷…

QT:核心控件-QWidget

文章目录 控件enableobjectNamegeometrysetWindowTitleopacitycursorFonttooltipstyleSheet 控件 什么是控件? 如上所示,就是控件,而本篇要做的就是对于这些控件挑选一些比较有用的常用的进行讲解分析 在QT的右侧,会有对应的空间…

asp.net朱勇项目个人博客(3)

引文:按照书上的项目,我们最后实现管理端的三个增删改查的功能即可,相对与三个增删改查,文章,分类和留言,这里我们所需要用的的关联的一个表就是文章表,因为文章表每一个文章的增加显示和修改都需要对应的一个分类&…

【C++11新特性】lambda表达式和应用场景

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

汽车电子零部件(13):BMS电池管理系统

前言: 电池管理系统(BMS)确保电动汽车(EV)的能量分配安全高效。目前流行电动汽车中使用的有四种主要BMS架构,BMS与充电基础设施互为集成关系。BMS主要管理 的是电池组,电池组由很多电芯组成,比如下图是H/EV电池组的主要部件,显示了电池、连接、控制电路和包装的总体布…

毕业设计:《基于 Prometheus 和 ELK 的基础平台监控系统设计与实现》

前言 《基于 Prometheus 和 ELK 的基础平台监控系统设计与实现》&#xff0c;这是我在本科阶段的毕业设计&#xff0c;通过引入 Prometheus 和 ELK 架构实现企业对指标与日志的全方位监控。并且基于云原生&#xff0c;使用容器化持续集成部署的开发方式&#xff0c;通过 Sprin…

如何通过wifi网络将串口数据发送到多个设备

摘要&#xff1a;当lora电台的速率无法满足高速传输时&#xff0c;可以考虑用“串口服务器”。本文介绍一下如何使用TP-LINK的TL-CPE300D实现一对多的数据发送。 当前也有使用lora电台的&#xff0c;但是lora电台支持的速率有限&#xff0c;可能最大支持到9600&#xff0c;甚至…

【VTKExamples::Rendering】第一期 TestAmbientSpheres(环境照明系数)

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例TestAmbientShperes,介绍环境照明系数对Actor颜色的影响,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动…

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

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

《Python机器学习 》书籍分享

文章目录 前言内容介绍作者简介书籍目录 前言 随着计算能力的快速增长&#xff0c;大量任务都可在台式机上完成&#xff1b;在这样的背景下&#xff0c;机器学习应运而生&#xff0c;成为当今炙手可热的话题。但初出茅庐的新手常对机器学习感到十分畏惧&#xff1b;为给这些新…

RabbitMQ 是如何做延迟消息的 ?——Java全栈知识(15)

RabbitMQ 是如何做延迟消息的 &#xff1f; 1、什么是死信&#xff1f; 当一个队列中的消息满足下列情况之一时&#xff0c;可以成为死信&#xff08;dead letter&#xff09;&#xff1a; 消费者使用 basic.reject 或 basic.nack 声明消费失败&#xff0c;并且消息的 reque…

推荐5个免费的国内平替版GPT

提起AI&#xff0c;大家第一个想到的就是GPT。 虽然它确实很厉害&#xff0c;但奈何于我们水土不服&#xff0c;使用门槛有些高。 不过随着GPT的爆火&#xff0c;现在AI智能工具已经遍布到各行各业了&#xff0c;随着时间的推移&#xff0c;国内的AI工具也已经“百花盛放”了…

如何添加、编辑、调整WordPress菜单

我们最近在使用WordPress建站建设公司网站。我们是使用的hostease的主机产品建设的WordPress网站。在建设网站使用遇到了一些WordPress菜单使用方面的问题。好在hostease提供了不少帮助。 下面把WordPress菜单使用心得分享一下。 本文将详细介绍WordPress菜单的各种功能&#x…

智能家居|基于SprinBoot+vue的智能家居系统(源码+数据库+文档)

智能家居目录 基于SprinBootvue的智能家居系统 一、前言 二、系统设计 三、系统功能设计 1管理员&#xff1a;个人中心管理功能的详细实现 2管理员&#xff1a;用户信息管理功能的详细实现 3管理员&#xff1a;家具管理功能的详细实现 4管理员&#xff1a;任务管理功能…

QT+串口调试助手+扩展版

前言&#xff1a;此文章是这篇文章的拓展 QT串口调试助手基本版-CSDN博客&#xff0c;如果需要独立完成串口调试助手直接看基本版文章即可&#xff0c;如果需要完成串口调试助手的其他功能&#xff0c;参考拓展版。 一、更新QT串口调试助手UI界面 1、ui串口设置界面 2、ui串口…

【win10 文件夹数量和看到不一致查看隐藏文件已经打开,Thumb文件作妖】

目录 任务介绍&#xff1a;重命名规则修改前修改后 实现思路VB代码实现BUG犯罪现场&#xff08;眼见不一定为实&#xff09;破案1&#xff1a;抓顶风作案的反贼&#xff01;&#xff01;&#xff01;破案2&#xff1a;破隐身抓刺客&#xff01;&#xff01;&#xff01;杀器&am…

[1726]java试飞任务规划管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java试飞任务规划管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql…

【LLM 论文】Least-to-Most Prompting 让 LLM 实现复杂推理

论文&#xff1a;Least-to-Most Prompting Enables Complex Reasoning in Large Language Models ⭐⭐⭐ Google Research, ICLR 2023 论文速读 Chain-of-Thought&#xff08;CoT&#xff09; prompting 的方法通过结合 few-show prompt 的思路&#xff0c;让 LLM 能够挑战更具…

我的Transformer专栏来啦

五一节前吹的牛&#xff0c;五一期间没完成&#xff0c;今天忙里偷闲&#xff0c;给完成了。 那就是初步拟定了一个《Transformer最后一公里》的写作大纲。 之前一直想写一系列Transformer架构的算法解析文章&#xff0c;但因为一直在忙&#xff08;虽然不知道在忙啥&#xf…