史上最全步骤从0到1搭建最新版本jenkins部署微服务,整合git和maven实现自动构建发版,抓紧收藏起来吧!

news2025/1/16 21:53:54

好文推荐:
netty搭建websocket集群(高性能.,高并发)
springboot 实现延时队列(超级实用)
2.5万字讲解DDD领域驱动设计(史上最全DDD)

jenins部署到自动构建发版

  • 1. 前言
    • 1.1 背景
    • 1.2 jenkins是什么
  • 2. 安装 jdk11 & jdk8
    • 2.1 下载jdk安装包
    • 2.2 解压安装包
    • 2.3 将java8配置成环境变量
  • 2. 安装jenkins并启动
    • 2.1 下载jenkins的war包,安装最新版本即可
    • 2.2 使用jdk11启动jenkins
    • 2.3 防火墙开放端口
    • 2.4 访问jenkins
    • 2.5 输入管理员密码
    • 2.6 点击安装推荐的插件
    • 2.7 创建管理员用户
    • 2.8 点击开始使用
  • 5. 安装git
    • 5.1 下载git安装包
    • 5.2 解压git安装包
    • 5.3 编译安装git
    • 5.4 配置环境变量
    • 5.4 git是否安装成功
  • 6. 安装maven
    • 6.1 下载maven安装包
    • 6.2 安装maven
    • 6.3 配置maven的本地仓库
    • 6.4 配置maven阿里云镜像
    • 6.5 配置maven环境变量
    • 6.6 验证maven配置成功
  • 7. 安装jenkins插件
  • 8. 配置jenkins
    • 8.1 配置jdk
    • 8.1 配置git
    • 8.1 配置maven
  • 9. 配置一个job
    • 9.1 新建Item
    • 9.2 配置git账号和密码
    • 9.3 配置git
    • 9.3 配置maven
  • 10. 编写启动脚本
  • 11. 发版
  • 12. 总结

在这里插入图片描述

1. 前言

1.1 背景

传统的软件开发在系统上线的时候需要手动进行,这个过程可能相对繁琐和容易出错,发布过程如下:

  1. 代码构建:开发人员在本地环境中编写代码,并手动进行代码编译、打包等操作,生成可执行的软件包或者部署文件,比如jar包或者war包。
  2. 手动集成和测试:开发人员需要手动将代码变更集成到主干代码库中,并在集成后手动运行测试来确保代码的质量和稳定性。
  3. 手动部署:一旦代码通过了测试,开发人员可能需要手动将软件部署到目标环境中,比如测试环境、预发布环境或者生产环境。
  4. 手动备份:发布前,开发人员需要手动备份历史版本,如果出现问题,可能需要回滚到之前的稳定版本。

这种手动的发布过程存在以下问题:

  1. 容易出错:人为操作容易出现错误,比如遗漏某个步骤或者配置错误,导致发布失败或者软件出现问题。
  2. 耗时耗力:手动操作需要花费大量的时间和人力资源,尤其是在大型项目或者频繁发布的情况下。
  3. 不可追溯:手动操作缺乏可追溯性,难以记录和回顾发布过程中的细节和问题,影响后续的改进和优化。
  4. 因此,随着持续集成和持续交付的理念的兴起,Jenkins 等持续集成工具的出现填补了这一空白,帮助团队实现了自动化的构建、集成、测试和部署,提高了发布的效率和质量。

1.2 jenkins是什么

Jenkins是一个开源的自动化服务器,用于自动化不同任务的构建、测试和部署。它最初是Hudson项目的一个分支,但随着时间的推移已经发展成为一个独立的项目。

Jenkins的主要功能包括:

  1. 持续集成/持续交付(CI/CD):Jenkins是一个流行的CI/CD工具,可以自动执行代码构建、测试和部署的工作流程。通过Jenkins,团队可以快速、频繁地发布软件。
  2. 可扩展性:Jenkins具有丰富的插件生态系统,提供了各种各样的插件,涵盖了几乎所有领域,包括版本控制、构建工具、部署工具、通知等。这使得Jenkins能够满足不同团队的需求,并支持各种不同的工作流程。
  3. 易用性:Jenkins提供了直观的用户界面,使得用户可以轻松地设置和管理各种构建任务和工作流程。它还支持基于Web的配置,使得用户可以通过浏览器轻松地访问和管理Jenkins实例。
  4. 分布式构建:Jenkins支持在多台计算机上执行构建任务,这样可以更快地完成大型项目的构建过程。它还支持在不同操作系统和环境中运行构建任务。
  5. 日志和报告:Jenkins会生成详细的构建日志和报告,包括每个构建的输出、测试结果、代码覆盖率等信息,帮助团队跟踪和分析构建过程中的问题。

总的来说,Jenkins是一个功能强大、灵活且易于使用的自动化工具,能够帮助团队实现持续集成、持续交付,并提高软件交付的质量和效率。

2. 安装 jdk11 & jdk8

前言:
jdk8是项目使用的,需要配置为环境变量
jdk11只是运行jenkins的,无需配置环境变量

2.1 下载jdk安装包

前提需要登录oracle账户
下载jdk11安装包
下载jdk8安装包
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f7c7700e03d34b8989b715473114edfe.png在这里插入图片描述

2.2 解压安装包

tar -zxvf jdk-8u401-linux-x64.tar.gz
tar -zxvf jdk-11.0.22_linux-x64_bin.tar.gz

2.3 将java8配置成环境变量

①修改配置文件

sudo vim /etc/profile

②在最后添加内容:

export JAVA_HOME=/usr/local/java/jdk1.8.0_351
export JRE_HOME=${JAVA_HOME}/jre    
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib    
export PATH=${JAVA_HOME}/bin:$PATH

③刷新配置文件

source /etc/profile

④检测是否配置成功

java -version 

2. 安装jenkins并启动

2.1 下载jenkins的war包,安装最新版本即可

下载jenkins
在这里插入图片描述

2.2 使用jdk11启动jenkins

指定jenkins的家:-DJENKINS_HOME=/wdy/jenkins

/home/java/jdk-11.0.22/bin/java -DJENKINS_HOME=/wdy/jenkins -jar /home/jenkins/jenkins.war >> /wdy/jenkins.log

后台启动命令:

nohup /home/java/jdk-11.0.22/bin/java -DJENKINS_HOME=/wdy/jenkins -jar /home/jenkins/jenkins.war >> /wdy/jenkins.log 2>&1 &

2.3 防火墙开放端口

否则本地访问8080,访问不通

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

2.4 访问jenkins

访问服务器地址:http://192.168.0.132:8080
在这里插入图片描述

2.5 输入管理员密码

查看管理员

cat /wdy/jenkins/secrets/initialAdminPassword

在这里插入图片描述
将密码复制到jenkins,点击右下角继续

2.6 点击安装推荐的插件

然后等一会jenkins正在下载安装
在这里插入图片描述

2.7 创建管理员用户

在这里插入图片描述
在这里插入图片描述

2.8 点击开始使用

在这里插入图片描述
在这里插入图片描述

5. 安装git

5.1 下载git安装包

wget https://www.kernel.org/pub/software/scm/git/git-2.14.0.tar.gz

5.2 解压git安装包

tar -zxvf git-2.14.0.tar.gz

5.3 编译安装git

cd git-2.14.0
./configure --prefix=/usr/local/git all
make && make install

如果编译失败的话,先执行下面这两句,安装一下git需要的依赖

yum install curl-devel expat-devel openssl-devel zlib-devel gcc-c++ 
yum install perl-ExtUtils-MakeMaker automake autoconf libtool make

5.4 配置环境变量

①打开配置文件

vim /etc/profile

②配置git路径

export GIT_HOME=/usr/local/git
export PATH=$GIT_HOME/bin:$PATH

③刷新配置文件

source /etc/profile

5.4 git是否安装成功

git --version

在这里插入图片描述

6. 安装maven

6.1 下载maven安装包

下载maven
在这里插入图片描述

6.2 安装maven

tar -zxvf apache-maven-3.9.6-bin.tar.gz

6.3 配置maven的本地仓库

vim /usr/maven/apache-maven-3.9.6/conf/settings.xml

将本地仓库配置加入到如图为止
/usr/maven/repository
在这里插入图片描述
然后保存退出

6.4 配置maven阿里云镜像

vim /usr/maven/apache-maven-3.9.6/conf/settings.xml
<mirrors>
    <!--阿里镜像的配置-->
	 <mirror>
     <id>nexus-aliyun</id>
     <mirrorOf>central</mirrorOf>
     <name>Nexus aliyun</name>
     <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
</mirrors>

加入如图位置
在这里插入图片描述
然后保存退出

6.5 配置maven环境变量

①编辑配置文件

sudo vim /etc/profile

②配置mven系统变量

# maven environment
export M2_HOME=/usr/maven/apache-maven-3.9.6
export CLASSPATH=$CLASSPATH:$M2_HOME/lib
export PATH=$PATH:$M2_HOME/bin

③刷新系统配置

source /etc/profile

6.6 验证maven配置成功

mvn -v

在这里插入图片描述

7. 安装jenkins插件

Dashboard --> Manage Jenkins --> Plugins --> Available -->plugins
然后搜索插件
在这里插入图片描述
等待jenkins下载,显示如下安装成功
在这里插入图片描述
推荐的安装的插件如下:
Git
SSH
Git Parameter
Maven Integration
Publish Over SSH
Email Extension Plugin

8. 配置jenkins

Dashboard --> Manage Jenkins --> Tools

8.1 配置jdk

在这里插入图片描述

8.1 配置git

在这里插入图片描述

8.1 配置maven

在这里插入图片描述

9. 配置一个job

Dashboard --> 新加Item

9.1 新建Item

在这里插入图片描述

9.2 配置git账号和密码

点击添加 —> jenkins
在这里插入图片描述
弹出凭证,填写git用户名和密码
在这里插入图片描述

9.3 配置git

在这里插入图片描述

9.3 配置maven

clean package -Dmaven.test.skip=true
在这里插入图片描述

10. 编写启动脚本

基于jenkins的微服务无感发版脚本,可联系小编获取!!!

ps -fe|grep hello-jenkins-0.0.1-SNAPSHOT.jar|grep -v grep|awk '{print $2}'|xargs -i kill -9 {}
#告诉jenkins 不要把nohup这个命令杀死
BUILD_ID=dontKillMe
nohup java -jar /wdy/jenkins/workspace/hello-jenkins/target/hello-jenkins-0.0.1-SNAPSHOT.jar >> ./hello-jenkins.log 2>&1 &

在这里插入图片描述

11. 发版

在这里插入图片描述

12. 总结

有小伙伴遇到部署jenkins什么问题,可以加群讨论!!!

如果看到这里,说明你喜欢这篇文章,请关注和点赞小编。关注【微信公众号微信】搜索【老板再来一杯时光】回复【进群】即可进入无广告交流群!

好文推荐:
netty搭建websocket集群(高性能.,高并发)
springboot 实现延时队列(超级实用)
2.5万字讲解DDD领域驱动设计(史上最全DDD)

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

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

相关文章

【Java EE】SpringBoot的创建与简单使用

文章目录 &#x1f340;环境准备&#x1f333;Maven&#x1f332;SpringBoot是什么&#x1f384;Spring Boot 项目创建&#x1f338;使用Idea创建&#x1f338;创建SpringBoot项⽬&#x1f338;SpringBoot项目的运行 ⭕总结 &#x1f340;环境准备 如果你的IDEA是专业版&#…

【二分查找】Leetcode x 的平方根

题目解析 69. x 的平方根 这道题表面是没有顺序性&#xff0c;但是我们可以发现如果使用枚举策略&#xff0c;它是包含顺序性质的&#xff0c;因此我们将枚举算法改进成二分算法 算法讲解 我们让left指针指向1&#xff0c; right指针指向x 如果当前的mid计算出来的平方 &g…

VPDN(L2TP、PPTP)

1、虚拟专用拨号网络 远程接入VPN&#xff0c;客户端可以是PC机 技术&#xff1a;L2TP、PPTP 术语&#xff1a;LAC&#xff1a;L2TP的访问集中器 --- 提供用户的接入 LNS&#xff1a;L2TP的网络服务器 --- 提供L2TP服务的服务器 2、技术 1&#xff09;PPTP 点对点隧道…

福州装修答疑 | 飘窗能不能砸掉?福州中宅装饰,福州装修

装修中的飘窗是一种常见的装饰元素&#xff0c;它不仅可以增加室内的采光和通风效果&#xff0c;还能为居室增添一份雅致和温馨。然而&#xff0c;很多业主在装修中都会遇到一个共同的问题&#xff1a;装修中的飘窗到底能不能砸&#xff1f;什么情况下可以砸&#xff1f;什么情…

LNMP环境:揭秘负载均衡与高可用性设计

lb1: 192.168.8.5 lb2: 192.168.8.6 web1:192.168.8.7 web2:192.168.8.8 php-fpm: 192.168.8.9 mysql: 192.168.8.10 nfs:192.168.8.11 分别插入镜像 8.5-8.8 分别安装nginx,并设置启动 8.9 安装php 8.10 安装mysql 先配置一台web服务器然后同步 设置网站根目录 cp -…

golang设计模式图解——代理模式

设计模式 GoF提出的设计模式有23个&#xff0c;包括&#xff1a; &#xff08;1&#xff09;创建型(Creational)模式&#xff1a;如何创建对象&#xff1b; &#xff08;2&#xff09;结构型(Structural )模式&#xff1a;如何实现类或对象的组合&#xff1b; &#xff08;3&a…

Linux:权限篇

文章目录 前言1.用户2.文件的权限管理2.1 修改文件的权限2.2 修改文件的拥有者2.3 修改文件的所属组 3.file指令4.umask指令4.目录的权限管理总结 前言 Linux权限在两个地方有所体现&#xff0c;一种是使用用户&#xff1a;分为root超级用户员与普通用户。另一个是体现在文件的…

nest路由参数

当你需要接受动态数据作为接口请求的一部分时&#xff08;例如&#xff1a;GET请求 /cats/1 获取 id 为 1 的数据&#xff09; 可以在路径中添加路由参数的标记 :参数名 &#xff0c;捕捉该位置的动态值 将Param()装饰器加在函数接收参数的位置中&#xff0c;然后使用 1. 写法…

基于SSM+Jsp+Mysql的个性化影片推荐系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

红黑树平衡艺术:最大化与最小化红色结点比值的策略与实现

红黑树平衡艺术&#xff1a;最大化与最小化红色结点比值的策略与实现 一、 最大比值的红黑树构造1.1 伪代码示例&#xff1a;1.2 C代码示例&#xff1a; 三、最小比值的红黑树构造3.1 伪代码示例&#xff1a;3.2 C代码示例&#xff1a; 四、结论 红黑树是一种自平衡的二叉搜索树…

计算机网络——34LANs

LANs MAC地址和ARP 32bit IP地址 网络层地址用于使数据到达目标IP子网&#xff1a;前n - 1跳从而到达子网中的目标节点&#xff1a;最后一跳 LAN&#xff08;MAC/物理/以太网&#xff09;地址&#xff1a; 用于使帧从一个网卡传递到与其物理连接的另一个网卡&#xff08;在同…

【C语言基础】:文件操作详解(前篇:准备知识)

文章目录 一、什么是文件以及文件的分类1.1 程序文件1.2 数据文件1.3 文件名 二、文本文件和二进制文件2.1 数据在文件中的存储 三、文件的打开和关闭3.1 流和标准流3.1.1 流3.1.2 标准流 3.3 文件指针3.5 文件的打开和关闭 一、什么是文件以及文件的分类 文件是指存储在计算机…

PHP数据类型

华子目录 数据类型PHP的八种数据类型基本数据类型&#xff0c;4类复合数据类型&#xff0c;2类特殊数据类型&#xff0c;2类 类型转换在PHP中有两种类型转换方式其他类型转bool类型其他类型转数值类型实例 类型判断获取和设定变量类型获取gettype(变量名)设置settype(变量名,类…

窜天猴AI直播软件功能列表

迎新点名&#xff1a;新进直播间的用户随机指数级自由组合话术&#xff0c;并播报出来 礼物/关注&#xff1a;用户送礼物、关注以及灯牌事件同上根据话术指数级随机组合出来评论区关键字回复&#xff1a;用户评论后&#xff0c;根据预设置的关键字进行语音回复 自动寻品&…

Redis的I/O多路复用

Redis是单线程的&#xff0c;为什么还那么快&#xff1f; 1.redis是基于内存的 2.redis使用I/O多路复用模型 关于I/O多路复用&#xff1a; 多路&#xff1a;多个客户端连接复用&#xff1a;使用单线程就能够实现同时处理多个客户端的连接 单线程去监控多个Socket&#xff…

多线程的入门(三)Thread的认识

线程的生命周期状态 1.Thread的构造器 Thread类的所有构造器最后都指向int方法 示例1&#xff1a; public Thread() {init(null, null, "Thread-" nextThreadNum(), 0); }示例2&#xff1a; public Thread(Runnable target) {init(null, target, "Thread-&qu…

list的使用

前言 我们前面已经对string和vector进行了学习使用&#xff0c;以及对他们的底层进行了模拟实现&#xff01;本期我们继续学习STL的另外一个容器---list。 本期内容介绍 什么是list&#xff1f; list的常用接口 什么是list? 还是来看看官方的文档说明&#xff01; 这里通过…

Flutter学习12 - SharedPreferences

1、shared_preferences 插件 类似于 Android 中的 SharedPreferences&#xff0c;键值对的形式进行本地存储 1.1、引入插件 在 pubspec.yaml 中引入 dependencies:shared_preferences: ^2.1.0在需要用到的文件中引入 import package:shared_preferences/shared_preference…

TAB标签美化 - SVG作为mask

今天觉得V3的标签不是很好看&#xff0c;忽然想起来之前看过Vue Admin Beautiful Pro的样式挺好的&#xff0c;顺手研究了一把。发现Vue Admin Beautiful是采用PNGmask css来解决的。于是乎打算把V3的标签页做点小美化&#xff0c;但是迁移过程发生些小插曲&#xff0c;在此记录…

蓝桥杯嵌入式(G431)备赛笔记——按键模块设计

cubeMX配置: 原理图 引脚配置为上拉模式 定时器 使用定时器3(通用定时器,使用外部晶振,内部时钟),分频系数为80(从0开始则为80-1),则每1s 1m次,定时评率为为10000,对应1s 1m/10000次,频率为10ms每次 一定记得开启NVIC使能中断 编写中断回调函数 void HAL_TIM_Per…