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.mfbz.cn/a/607626.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【2024全国青少年信息素养大赛初赛时间以及模拟题】

2024全国青少年信息素养大赛时间已经出来了 目录 全国青少年信息素养大赛智能算法挑战赛初中模拟卷 全国青少年信息素养大赛智能算法挑战赛初中模拟卷 1、比赛时间和考试内容: 算法创意实践挑战赛初中组于5月19日举行,检录时间为10:30-11:00&#xf…

男士内裤什么材质的好?五款材质舒适的男士内裤品牌

男士内裤目前已经有非常多的选择,三角/平角、传统面料/功能面料、设计版型等等都五花八门,所以不少男性朋友在挑选内裤时都觉得选择过多,另人难以选择,同时还担心选到一些质量不好的内裤,舒适性不仅差而且对健康有影响…

C语言洛谷题目分享(11)回文质数

目录 1.前言 2.题目:回文质数 1.题目描述 2.输入格式 3.输出格式 4.输入输出样例 5.题解 3.小结 1.前言 哈喽大家好,今儿继续为大家分享一道蛮有价值的一道题,希望大家多多支持喔~ 2.题目:回文质数 1.题目描述 因为 151 …

ESP8266-01s刷入固件报SP8266 Chip efuse check error esp_check_mac_and_efuse

一、遇到的问题 使用ESP8266 固件烧录工具flash_download_tools_v3.6.8 烧录固件报错: 二、解决方法 使用espressif推出发基于python的底层烧写工具:esptool 安装方法:详见https://docs.espressif.com/projects/esptool/en/latest/esp32/ …

【Linux】进程间通信方式之管道

🤖个人主页:晚风相伴-CSDN博客 💖如果觉得内容对你有帮助的话,还请给博主一键三连(点赞💜、收藏🧡、关注💚)吧 🙏如果内容有误的话,还望指出&…

最新:Lodash 严重安全漏洞背后你不得不知道的 JavaScript 知识

可能有信息敏感的同学已经了解到:Lodash 库爆出严重安全漏洞,波及 400万 项目。这个漏洞使得 lodash “连夜”发版以解决潜在问题,并强烈建议开发者升级版本。 我们在忙着“看热闹”或者“”升级版本”的同时,静下心来想&#xf…

人工智能|推荐系统——工业界的推荐系统之冷启动

UGC的物品冷启有哪些 ⼩红书上⽤户新发布的笔记。 B站上⽤户新上传的视频。 今⽇头条上作者新发布的⽂章。 为什么要特殊对待新笔记? 新笔记缺少与⽤户的交互,导致推荐的难度⼤、效果差。 扶持新发布、低曝光的笔记,可以增强作者发布意愿…

在Ubuntu安装RPM文件

Ubuntu软件源包含数千个deb软件包,可以从Ubuntu软件中心或使用apt命令行安装。 Deb是所有基于Debian的Linux发行版,例如包括Ubuntu,Linux mint等发行版使用的安装包格式。 如果某些软件在Ubuntu软件源中不可用,可以通过启用适当的…

NOIP,CSP-J,CSP-S——函数

一、函数概念 /*函数返回类型 函数名(参数){语句 } */ int add(int x,int y){return x+y; } 调用这个函数add int main(){int x,y,z;scanf("%d%d",&x,&y);z=add(x,y);printf("%d",z); } 二、变量作用域 main函数的z只作用于第二个for语句…

Day3 | Java基础 | 4常见类

Day3 | Java基础 | 4 常见类 基础版Object类equalshashCode(散列码)hashCode和equals clone方法String类 问题回答版Object类Object类的常见方法有哪些?和equals()的区别是什么?为什么要有hashCode?hashCode和equals的…

【C++】适配器模式

文章目录 前言 1. 适配器的介绍2. 仿函数2.1 sort函数的模板参数2.2 priority_queue类的模板参数 3. priority_queue模拟实现3. stack & queue 模拟实现3.1 deque的介绍3.2 deque的优点与缺陷3.3 STL标准库中对于stack和queue的模拟实现 前言 C中的适配器是一种设计模式&am…

【强训笔记】day16

NO.1 代码实现&#xff1a; class StringFormat { public:string formatString(string A, int n, vector<char> arg, int m) {string ret;int j0;for(int i0;i<n;i){if(A[i]%){if(i1<n&&A[i1]s){retarg[j];i;}else {retA[i];}}else {retA[i];}}while(j&l…

wlan二层旁挂组网实验

实验拓扑图 代码&#xff1a; SW1 <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sysn sw1 [sw1]undo info-center enable Info: Information center is disabled. [sw1]vlan batch 10 20 30 Info: This operation may take a few seconds. …

基于Springboot的校园悬赏任务平台(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的校园悬赏任务平台&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

12 华三的二层链路聚合

12 华三的二层链路聚合 配置思路 1. 配置二层静态聚合组 (1) 进入系统视图。 system-view (2) 创建二层聚合接口&#xff0c;并进入二层聚合接口视图。 interface bridge-aggregation interface-number [ lite ] 创建二层聚合接口后&#xff0c;系统将自动生成…

二分查找向下取整导致的死循环69. x 的平方根

二分查找向下取整导致的死循环 考虑伪题目&#xff1a;从数组arr中查找出目标元素target对应的下标&#xff0c;如果数组中不存在目标元素&#xff0c;找 到第一个元素值小于target的元素的下标。 编写二分查找算法如下&#xff1a; Testvoid testBinarySearch(){int[] arr n…

LeetCode 142.环形链表Ⅱ

题目描述 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内…

CSS和JavaScript

CSS 在html中引入CSS 我们需要先在该项目先建立css文件 html引入CSS,在<head></head>中添加<link>标签 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" co…

JavaScript原理篇——理解对象、构造函数、原型、继承

对象:在JavaScript中&#xff0c;几乎所有的东西都是对象&#xff0c;包括基本数据类型的包装对象。对象是属性的集合&#xff0c;每个属性都有一个键和一个值。对象可以通过字面量、构造函数或Object.create()等方式创建。 构造函数:构造函数是用来创建对象的函数&#xff0c;…

5月9(信息差)

&#x1f30d; 可再生能源发电量首次占全球电力供应的三成 &#x1f384;马斯克脑机接口公司 Neuralink 计划将 Link 功能扩展至现实世界&#xff0c;实现控制机械臂、轮椅等 马斯克脑机接口公司 Neuralink 计划将 Link 功能扩展至现实世界&#xff0c;实现控制机械臂、轮椅等…
最新文章