基于Jenkins构建生产CICD环境-------从小白到大神之路之学习运维第84天

news2024/9/21 21:50:36

第四阶段

时  间:2023年8月21日

参加人:全班人员

内  容:

基于Jenkins构建生产CICD环境

目录

一、环境概述

二、Jenkins简介

(一)Jenkins 包含以下几个特点:

(二)持续集成

1、持续集成的效益

2、持续集成的作用

3、持续集成的特点

(三)持续交付

(四)持续部署

(五)Maven 介绍

三、安装配置Jenkins

Jenkins安装方式一:war包

Jenkins安装方式二:rpm方式(推荐)

启动jenkins

RPM包安装的内容

配置文件说明

web操作


一、环境概述

        随着软件开发需求及复杂度的不断提高,团队开发成员之间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。

        Jenkins自动化部署可以解决集成、测试、部署等重复性的工作,工具集成的效率明显高于人工操作;并且持续集成可以更早的获取代码变更的信息,从而更早的进入测试阶段,更早的发现问题,这样解决问题的成本就会显著下降;持续集成缩短了从开发、集成、测试、部署各个环节的时间,从而也就缩短了中间出现的等待时间;持续集成也意味着开发、集成、测试、部署得以持续。

        所以,当配置完Jenkins 持续集成持续交付环境后,就可以把发布的任务交给集成服务器去打理了。使用 Maven(Ant) 等来实现 Java 项目自动化构建发布部署。

        这些工具可以帮助在构建过程中实现自动化发布、回滚等动作。

二、Jenkins简介

 

        Jenkins是一个用Java编写的开源的持续集成工具。在与Oracle发生争执后,项目从Hudson项目独立。

官方网站:https://jenkins.io/。

        Jenkins提供了软件开发的持续集成服务。它运行在Servlet容器中(Tomcat)。它支持软件配置管理(SCM)工具(包括AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase和RTC),可以执行基于Apache Ant和Apache Maven的项目,以及任意的Shell脚本和Windows批处理命令。Jenkins的主要开发者是川口耕介。Jenkins是在MIT许可证下发布的自由软件。

        Jenkins 能实时监控持续集成过程中所存在的问题,提供详细的日志文件和提醒功能,还能用图表的形式,形象地展示项目构建的趋势和稳定性。

(一)Jenkins 包含以下几个特点:

易安装:仅仅一个 jenkins.war,从官网下载该文件后,直接运行,无需额外的安装,更无需安装数据库;

易配置:提供友好的 GUI 配置界面;

变更支持:Jenkins 能从代码仓库(SVN /Git)中获取并产生代码更新列表,并输出到编译输出信息中;

支持永久链接:用户是通过 Web 来访问 Jenkins 的,而这些 Web 页面的链接地址都是永久链接地址,可以在各种文档中直接使用该链接;

集成 E-Mail/RSS/IM:当完成一次集成时,可通过这些工具实时收取集成结果(构建一次集成需要花费一定时间,有了这个功能,就可以在等待结果过程中,干别的事情);

JUnit/TestNG 测试报告:也就是用以图表等形式提供详细的测试报表功能;

支持分布式构建:Jenkins 可以把集成构建等工作分发到多台计算机中完成;

文件指纹信息:Jenkins 会保存构建集成所产生的 jars 文件、集成构建使用了哪个版;

支持第三方插件:Jenkins 支持第三方插件,这使得 Jenkins 功能变得越来越强大。

(二)持续集成

        持续集成(英语:Continuous integration,缩写为 CI),一种软件工程流程,将所有工程师对于软件的工作复本,每天集成数次到共用主线(mainline)上。

        这个名称最早由葛来迪·布区(Grady Booch)在他的布区方法中提出,但是他并没有提到要每天集成数次。之后成为极限编程(extreme programming,缩写为XP)的一部分。在测试驱动开发(TDD)的作法中,通常还会搭配自动单元测试。

        持续集成的提出,主要是为了解决软件进行系统集成时面临的各项问题,极限编程称这些问题为集成地狱(integration hell)。

 

        持续集成主要是强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。简单来讲就是:频繁地(一天多次)将代码集成到主干。

1、持续集成的效益

·及早发现集成错误且由于修订的内容较小所以易于追踪,这可以节省项目的时间与成本。

·避免发布日期的前一分钟发生混乱,当每个人都会尝试为他们所造成的那一点点不兼容的版本做检查。

·当单元测试失败或发生错误,若开发人员需要在不除错的情况下还原代码库到一个没有问题的状态,只需要放弃一小部分的更改 (因为集成的次数频繁)。

·让 "最新" 的程序可保持可用的状态供测试、展示或发布用。

·频繁的提交代码会促使开发人员创建模块化,低复杂性的代码。

·防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。

2、持续集成的作用

·保证团队开发人员提交代码的质量,减轻了软件发布时的压力;

·持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量。

3、持续集成的特点

·是一个自动化的、周期性的集成测试过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预;

·需要有专门的集成服务器来执行集成构建;

·需要有代码托管工具支持;

(三)持续交付

        持续交付(英语:Continuous delivery,缩写为 CD),是一种软件工程手法,让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以释出的状况。

        它的目标在于让软件的建置、测试与释出变得更快以及更频繁。这种方式可以减少软件开发的成本与时间,减少风险。

        持续交付是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。

(四)持续部署

        持续部署(英语:Continuous Deployment,缩写为 CD),是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。

        有时候,持续部署也与持续交付混淆。持续部署意味着所有的变更都会被自动部署到生产环境中。持续交付意味着所有的变更都可以被部署到生产环境中,但是出于业务考虑,可以选择不部署。如果要实施持续部署,必须先实施持续交付。

 

持续部署即在持续交付的基础上,把部署到生产环境的过程自动化。

关键字: CI/CD 持续集成/持续交付/持续部署

(五)Maven 介绍

        Maven 项目对象模型(POM)是可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

        Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。

        由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司 项目采用 Maven 的比例在持续增长。

        Maven 这个单词来自于意第绪语(犹太语),意为知识的积累,最初在 Jakata Turbine 项目中用来简化构建过程。当时有一些项目(有各自 Ant build 文件),仅有细微的差别,而 JAR 文件都由 CVS 来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享 JARs。

三、安装配置Jenkins

1、主机初始化

[root@localhost ~]# hostname jenkins

[root@localhost ~]# bash

[root@jenkins ~]# systemctl stop firewalld

[root@jenkins ~]# iptables -F

[root@jenkins ~]# setenforce 0

 

2、软件要求

Java 8 无论是Java运行时环境(JRE)还是Java开发工具包(JDK)都可以。

1)第一种方式:

[root@jenkins ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

[root@jenkins ~]# java -version

openjdk version "1.8.0_161"

OpenJDK Runtime Environment (build 1.8.0_161-b14)

OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)

2)第二种方式

[root@jenkins ~]#rm -rf /usr/bin/java

[root@jenkins ~]#rz

[root@jenkins ~]#tar xf jdk-17_linux-x64_bin.tar.gz

[root@jenkins ~]#mv jdk-17.0.8 /usr/local/java

[root@jenkins ~]#vim /etc/profile

[root@jenkins ~]#source /etc/profile

[root@jenkins ~]#java -version

 

Jenkins安装方式一:war包

先安装tomcat将jenkins.war直接放到webapps目录下

通过 java -jar jenkins.war --httpPort=8080命令直接运行

官方仓库:https://pkg.jenkins.io/redhat-stable/

清华大学开源软件镜像站:

Index of /jenkins/redhat/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

下载相应的数据包即可,我这里使用的是jenkins-2.401-1.1.noarch.rpm

Jenkins安装方式二:rpm方式(推荐)

[root@jenkins ~]# rpm -ivh jenkins-2.181-1.1.noarch.rpm

 

启动jenkins

[root@jenkins ~]# jenkins start (保持打开状态)

[root@jenkins ~]# netstat -lnpt | grep  :8080

 

RPM包安装的内容

[root@jenkins ~]# rpm -ql jenkins

/etc/init.d/jenkins         # 启动文件

/etc/logrotate.d/jenkins    # 日志分割配置文件

/etc/sysconfig/jenkins      # jenkins主配置文件

/usr/lib/jenkins           # 存放war包目录

/usr/lib/jenkins/jenkins.war # war 包

/usr/sbin/rcjenkins        # 命令

/var/cache/jenkins        # war包解压目录 jenkins网页代码目录

/var/lib/jenkins           # jenkins 工作目录

/var/log/jenkins           # 日志

配置文件说明

[root@jenkins ~]# grep "^[a-Z]" /etc/sysconfig/jenkins

JENKINS_HOME="/var/lib/jenkins" #jenkins工作目录

JENKINS_JAVA_CMD=""

JENKINS_USER="jenkins" # jenkinx启动用户

JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"

JENKINS_PORT="8080" # 端口

JENKINS_LISTEN_ADDRESS=""

JENKINS_HTTPS_PORT=""

JENKINS_HTTPS_KEYSTORE=""

JENKINS_HTTPS_KEYSTORE_PASSWORD=""

JENKINS_HTTPS_LISTEN_ADDRESS=""

JENKINS_DEBUG_LEVEL="5"

JENKINS_ENABLE_ACCESS_LOG="no"

JENKINS_HANDLER_MAX="100" # 最大连接

JENKINS_HANDLER_IDLE="20"

JENKINS_ARGS=""

web操作

浏览器访问测试: http://192.168.100.131:8080

 

输入秘钥:

 

解锁Jenkins,密码从命令行中获取

 

 输入授权密码,然后点击下一步

 

选择安装推荐的插件

 

自动下载插件(状态全绿下一步)

 

状态有红色,重头再安装

 

状态有红色,重启后也可进,但是有插件安装错误,会影响

 

全绿之后操作:

创建管理员用户,选择使用admin账户继续!

 

实例配置,保存并完成!

 

点击开始使用

可以使用了!

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

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

相关文章

Matlab使用

Matlab使用 界面介绍 新建脚本:实际上就是新建一个新建后缀为.m的文件 新建编辑器:ctrlN 打开:打开最近文件,以找到最近写过的文件 点击路径,切换当前文件夹 预设:定制习惯用的界面 常见简单指令 ;…

S05-巧用单元格格式转换数据

视频教程 文章目录 S05-巧用单元格格式转换数据 S05-巧用单元格格式转换数据 格式类型默认格式(常规)转换格式数值1.21.200货币1.2¥1.20会计专用1.2¥1.20日期43567四月十二日时间0.3333333338:00 AM百分比1.2120.00%分数0.21/5科…

云养猪平台如何开发

随着数字化和智能化的发展,农业行业也逐渐开始融入互联网技术,其中云养猪平台作为新兴的农业数字化解决方案之一,备受关注。本文将探讨如何开发一款具备专业、思考深度和逻辑性的云养猪平台。 一、前期准备阶段: 1.明确目…

分类预测 | MATLAB实现1D-2D-CNN-GRU的多通道输入数据分类预测

分类预测 | MATLAB实现1D-2D-CNN-GRU的多通道输入数据分类预测 目录 分类预测 | MATLAB实现1D-2D-CNN-GRU的多通道输入数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 结合1D时序-2D图像多模态融合的CNN-GRU故障识别算法,基于一维时序信号和二维图…

k8s之nodes

概念: Node是Kubernetes中的工作节点,最开始被称为minion。一个Node可以是VM或物理机。每个Node(节点)具有运行pod的一些必要服务,并由Master组件进行管理,Node节点上的服务包括Docker、kubelet和kube-pro…

派森 #P126. 维吉尼亚加密

描述 维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定字符的替换关系。 如上图为维吉尼亚密码的加密过程示意,左边为加密替换表,上面第一行代表明文字母,左面第一列代表密钥字母,对如下明文加密:‪‬…

在飞腾麒麟linux上编译安装tcpdump小结

1 从:【免费】在麒麟Linux下编译所需要的四个源文件资源-CSDN文库,https://download.csdn.net/download/dijkstar/88236907下载几个源文件: 2 按照上面文件列表的顺序解压、编译、安装: (注意:操作之前&am…

贴片电阻的额定功率

1、不同封装电阻的额定功率不同 通常是越大的封装,额定功率越大,常见的封装和功率对应如下表: 封装 功率 0402 62.5mW 0603 100mW 0805 125mW 1206 250mW 1210 500mW 2、关于额定功率和环境温度 额定功率:在额定环境…

【Spring专题】Spring之Bean的生命周期源码解析——阶段二(三)(属性填充之循环依赖底层原理解析)

目录 前置知识循环依赖的产生Spring里面的3个Map 课程内容一、只有一级缓存的推理演进1.1 直接将实例化后生成的对象放入到单例池里面1.1 引入一个中间Map存实例化后的早期对象(疑似二级缓存)1.3 解决1.2需要被代理的问题(疑似二级缓存&#…

鸿蒙应用开发学习路线(OpenHarmony/HarmonyOS)

鸿蒙应用开发学习路线(OpenHarmony/HarmonyOS) HarmonyOS应用开发学习路线网站汇总社区汇总视频学习路线 OpenHarmony应用开发学习路线与资料网站汇总社区汇总学习路线 MarkDown工具推荐 HarmonyOS应用开发学习路线 作者:坚果 团队&#xff1…

gremlin安装使用 详细步骤

gremlin是一个图数据库查询工具,注意他只是一个工具类似于dbeaver,navicat,sqlyog,是专门来分析图数据库的一个工具。 下载 下载地址Apache Download Mirrors 省事的可以直接 wget https://www.apache.org/dyn/closer.lua/tin…

LC-平衡二叉树

LC-平衡二叉树 链接:https://leetcode.cn/problems/balanced-binary-tree/description/ 描述:给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的…

电容笔哪个厂家的产品比较好?开学值得买电容笔推荐

开学快要到来了,各位学生党又开始为开学而准备,而电容笔对于学生党来说是必备的数码产品。苹果的正版Pencil,由于价格很贵,仅仅一支的售价就要近千块钱,所以很多人都买不起。现在国内的平板电脑电容笔已经很完美了&…

FreeCAD傻瓜式教程之约束设定和构建实体、开孔、调整颜色等

本内容基于官方教程中的绘制简单的零件中的体会,在初次绘制的时候,总是无法完成,几经尝试才发现其关键点所在,以此文记录,用以被查资料,同时也希望能够帮到纯白新手快速熟悉该软件的绘图方法。 一、. 打开…

基于YOLOV8模型的西红柿目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要:基于YOLOV8模型的西红柿目标检测系统可用于日常生活中检测与定位西红柿目标,利用深度学习算法可实现图片、视频、摄像头等方式的目标检测,另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算法训练数…

创建延时队列

创建延时队列 queue.file_delay_destroy x-dead-letter-exchange: exchange.file_delay_destroy x-message-ttl: 259200000 259200000为3天,1000为1秒创建普通队列 queue.file_destroy创建普通交换机 type选择fanout 交换机绑定普通队列 (图中已经绑定,红框为…

救生员可以戴耳机吗,救生员佩戴蓝牙耳机会影响工作吗?

对于救生员这样一种常驻在水边的职位,戴耳机可以说是比较常见的,佩戴的最主要原因就在于方便进行沟通以及接受指令,以此来确保海边以及海滩等场所的安全,而在这种场景下,对于耳机的考验也是蛮大的,毕竟会出…

1.jvm和java体系结构

jvm简介 JVM:跨语言的平台 Java是目前应用最为广泛的软件开发平台之一。随着Java以及Java社区的不断壮大Java 也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一个社区。 ● 作为一个平台,Java虚拟机扮演着举足轻重的…

什么是KNN( K近邻算法)

什么是KNN( K近邻算法) 虽然名字中有NN,KNN并不是哪种神经网络,它全名K-Nearest-Neighbors:K近邻算法,是机器学习中常用的分类算法。 物以类聚,人以群分。KNN的基础思想很简单,要判断一个新数据的类别&…

Kubernetes入门 八、StatefulSet控制器

目录 概述创建StatefulSetPod 的管理策略扩容缩容 镜像更新滚动更新分区更新删除更新 删除 概述 Stateful 翻译为 有状态的 ,也是pod控制器的一种。 StatefulSet 是为了解决有状态应用的问题,Deployment是为无状态应用设计的。 无状态应用:…