Jenkins:持续集成与持续部署的利器

🐇明明跟你说过:个人主页

🏅个人专栏:《未来已来:云原生之旅》🏅

🔖行路有良友,便是天堂🔖

目录

一、引言

1、什么是Jenkins

2、Jenkins的起源

二、Jenkins的核心组件

1、Jenkins 主节点(Master)

2、Jenkins 从节点(Agent/Slave)

3、作业(Job)

4、构建(Build)

5、插件(Plugins)

6、用户界面(UI)

7、Jenkinsfile(管道文件)

三、Jenkins工作流程

1、Jenkins 工作流程的核心组件

2、Jenkins 流水线的执行过程


一、引言

1、什么是Jenkins

Jenkins 是一个开源的自动化服务器,主要用于持续集成(CI)和持续交付(CD)工作流的管理和执行。Jenkins 通过自动化软件开发生命周期中的构建、测试和部署过程,帮助开发团队更快、更高效地交付软件产品。

Jenkins 是由 Kohsuke Kawaguchi 于 2004 年开发,并在 2011 年成为开源项目。如今,Jenkins 已成为业界最受欢迎的持续集成工具之一,广泛应用于 DevOps 和自动化部署领域。

2、Jenkins的起源

Jenkins 最初是作为 Hudson 项目开始的,后来因项目管理上的分歧而独立出来,并更名为 Jenkins。

1. Hudson的诞生

  • 2004年,Jenkins 的创始人 Kohsuke Kawaguchi Sun Microsystems 工作时开始了 Hudson 项目的开发。最初,Hudson 是一个用于持续集成(CI)的工具,目的是解决软件开发中的集成和构建问题。
  • Hudson 被设计成一个开源的自动化构建工具,它提供了一个简单、可靠的框架来实现自动化构建、测试和部署。

2. Hudson的成功

  • Hudson 被开发者社区广泛接受,成为了最流行的持续集成工具之一。它具有丰富的插件支持,可以与各种开发和版本控制工具(如 Git、Subversion 等)集成。
  • Hudson 的稳定性和易用性使它成为许多开发团队的首选工具。

3. 管理分歧与Jenkins的独立

  • 2010年,Oracle 收购了 Sun Microsystems 后,Hudson 项目的开发方向发生了变化。Oracle 在管理 Hudson 项目时,做出了一些决策,这些决策不被社区广泛接受。
  • 由于对 Oracle 管理方式的不满,Kohsuke Kawaguchi 和其他核心开发者决定将 Hudson 项目从 Oracle 的控制下分离出来。
  • 2011年,Kohsuke Kawaguchi 和他的团队创建了一个新的开源项目,命名为 Jenkins,这个名字取自一个带有俏皮意味的名字——"Jenkins the Butler"(Jenkins 侍者),寓意着 Jenkins 是一个服务于开发者的工具。

4. Jenkins与Hudson的分歧

  • 由于管理上的分歧,Hudson 项目继续在 Oracle 的支持下发展,而 Jenkins 作为一个独立的项目,得到了更强大的社区支持。Jenkins 很快超越了 Hudson,成为了开源界最受欢迎的持续集成工具。
  • 2011年,Jenkins 被正式推向市场,并迅速获得了大规模的社区支持,许多开发团队选择迁移到 Jenkins。

5. Jenkins的快速发展

  • Jenkins 在独立后的几年中,得到了大量贡献和支持,其插件系统和灵活性不断增强,支持多种开发工具、部署工具和云服务,成为 DevOps 文化的一个重要组成部分。
  • Jenkins 的快速发展和高度的可扩展性,使其在全球范围内成为了持续集成和持续交付领域的领军工具之一。

 

二、Jenkins的核心组件

1、Jenkins 主节点(Master)

角色:

  • 主节点是 Jenkins 的控制中心,负责所有管理任务,如调度作业、分配构建到代理节点、管理构建历史、安装插件、以及通过 Web 界面与用户交互。

功能:

  • 负责调度构建任务并分配到从节点(如果有)。
  • 提供图形化用户界面(UI),用户可以在其中配置和管理作业。
  • 提供插件管理界面,允许安装、更新或删除插件。
  • 维护系统和作业配置文件,存储每个构建的历史记录和日志。
  • 监控所有构建和作业的状态。

2、Jenkins 从节点(Agent/Slave)

角色:

  • 从节点是用于执行构建任务的工作节点。主节点将作业分配给从节点来执行构建任务。通过使用多个从节点,Jenkins 可以实现分布式构建,提高构建的并行性和效率。

功能:

  • 执行由主节点分配的构建任务。
  • 支持不同平台(Windows、Linux、macOS),使得构建可以在多种环境下执行。
  • 与主节点保持连接并等待任务分配。
  • 可配置不同的执行环境,如设置环境变量、工具链等。

3、作业(Job)

角色:

  • 作业是 Jenkins 自动化任务的基本单位,定义了具体的构建、测试、部署过程。用户可以配置不同类型的作业来实现不同的功能,如构建、测试、部署等。

功能:

  • Freestyle Project:最常用的作业类型,支持简单的构建流程,如编译代码、运行测试、生成报告等。
  • Pipeline:一种强大的作业类型,支持定义复杂的构建流水线。通过 Groovy DSL 编写,能够描述完整的构建过程,包括构建、测试、部署等。
  • Multi-Branch Pipeline:用于支持 Git 等版本控制系统中的多分支构建,每个分支都会自动创建一个新的 Pipeline。

​ 

4、构建(Build)

角色:

  • 构建是 Jenkins 中作业执行的具体实例,每次作业执行时都会触发一个构建。构建包含了执行的各个步骤、环境设置、日志输出等内容。

功能:

  • 每个构建都会有一个唯一的构建编号。
  • 记录构建的日志,用户可以查看构建过程的详细输出。
  • 提供构建的状态信息(成功、失败、稳定等)。
  • 在构建后可进行通知、报告生成或进一步的操作。
     

5、插件(Plugins)

角色:

  • Jenkins 的核心功能非常基础,通过插件可以对其进行扩展,支持更多的功能和第三方工具的集成。插件是 Jenkins 扩展性的重要组成部分,几乎所有的 Jenkins 功能(如版本控制、构建工具、部署工具等)都是通过插件实现的。

功能:

  • 插件可以支持与多种版本控制系统(如 Git、SVN)集成,提供源代码管理功能。
  • 插件支持构建工具集成(如 Maven、Gradle)和自动化部署工具(如 Docker、Kubernetes)。
  • 插件还可以集成其他持续集成工具,如 SonarQube、JUnit、Nexus 等。

6、用户界面(UI)

角色:

  • Jenkins 提供了一个基于 Web 的用户界面,使得用户可以通过浏览器访问和管理 Jenkins。界面展示了作业、构建、插件和系统管理等功能。

功能:

  • 提供图形化的作业配置和管理界面。
  • 支持查看构建状态和历史记录,查看构建日志。
  • 用户界面支持查看报告、趋势、测试结果等。
  • 提供权限管理和用户角色控制,以确保系统的安全性。

7、Jenkinsfile(管道文件)

角色:

  • Jenkinsfile 是定义 Jenkins Pipeline 的文件,通常是一个 Groovy 脚本。Jenkinsfile 描述了一个完整的流水线,从源码拉取、构建、测试、部署等步骤。Jenkinsfile 使得 Jenkins 的流水线能够版本化,并且可以存储在版本控制系统中。

功能:

  • 通过代码定义构建流程,而不是通过 Jenkins Web UI 手动配置。
  • 支持流水线的版本控制,使得每次提交都能自动触发构建。
  • 支持并行构建、条件构建、环境变量管理等高级功能。

​ 

三、Jenkins工作流程

Jenkins 的工作流程(Pipeline)是指从源代码提交到最终的交付过程,包括代码的编译、测试、部署等任务。Jenkins 的工作流程可以通过 Jenkins Pipeline 来定义,它支持使用 DSL (Domain Specific Language) 来编写自动化的工作流脚本。

1、Jenkins 工作流程的核心组件

Jenkins 的工作流程包括几个关键的概念和组件,如 流水线、作业(Job)、节点(Node) 和 阶段(Stage)

1. 作业(Job)

  •   作业(Job)是 Jenkins 的基本构建单元,用于执行具体的任务。常见的作业类型包括自由风格作业、Maven 项目作业等。
  • 每 个作业可以配置构建步骤和触发条件,定义从代码获取到构建、测试、部署的整个过程。

2. 流水线(Pipeline)

  • 流水线 是一组自动化任务的集合。每个流水线代表一个复杂的工作流,从代码获取、构建、测试到部署。
  • 流水线通常定义在 Jenkinsfile 文件中。Jenkinsfile 是一个文本文件,包含了一系列的构建步骤,用于描述构建和部署的过程。
  • 流水线分为两种类型:声明式流水线(Declarative Pipeline)脚本化流水线(Scripted Pipeline)

3. 节点(Node)

  • 节点(Node) 是 Jenkins 执行任务的计算机或虚拟机。Jenkins 节点分为 主节点(Master)从节点(Agent)
    •  主节点(Master):负责协调任务的分配、调度等管理工作。
    •  从节点(Agent):实际执行构建任务的机器。主节点将任务分配给从节点执行。
  • 可以通过配置多个从节点来扩展 Jenkins 的计算能力。

4. 阶段(Stage)

  • 阶段(Stage) 是流水线中的一个重要概念,它是流水线的一个组成部分,每个阶段通常代表流水线中的一个特定任务,如编译、测试、部署等。
  • 在 Jenkins 中,阶段用于将流水线划分为多个明确的步骤,并按顺序执行。

5. 步骤(Step)

  • 步骤(Step) 是流水线中最小的执行单元,它执行具体的操作。每个阶段由多个步骤组成,步骤可以是执行 shell 命令、调用其他脚本或执行某个插件等。

   

2、Jenkins 流水线的执行过程

Jenkins 的工作流程通常分为以下几个步骤:

1. 源码管理

  • 在流水线开始时,Jenkins 会根据配置的源码管理工具(如 Git)获取代码。这通常会在流水线的 第一阶段 中执行。

2. 编译和构建

  • 在获取代码后,流水线将进入编译和构建阶段,通常通过执行如 mvn clean installgradle build 等命令来进行构建。

3. 测试

  • 流水线中的一个重要环节是自动化测试。Jenkins 会在构建完成后执行测试阶段。测试可以包括单元测试、集成测试、UI 测试等。

4. 构建产物存储

  • 构建完成后,Jenkins 通常会将构建产物存储到文件系统、构件库(如 Artifactory)或其他存储系统中。

5. 部署

  • 流水线中的一个重要环节是自动化部署,将构建好的应用部署到目标环境(如测试环境、生产环境)中。

6. 通知与报告

  • Jenkins 提供通知机制,当构建成功或失败时,可以通过电子邮件、Slack 等通知相关人员。此外,Jenkins 还提供构建报告和日志,帮助开发人员追踪问题。

   

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于云原生的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!  

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

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

相关文章

java中的数组(4)

大家好,今天是java数组的最后一篇,我来为大家介绍数组中一些常见用法,那么我们直接发车。 五.作为函数的返回值. 1数组对象在堆上,不会因为局部变量的销段而销毁. 2.new开辟新空间. 3.数组对象是在堆上的. 4.引用变量目前是在main函数里…

从SRE视角透视DevOps的构建精髓

SRE 侧重系统稳定性,DevOps 强调开发运维协作。SRE 实践助力DevOps,提升系统稳定性与团队协作效率。 SRE 运用软件工程的原理,将系统管理员的手工任务自动化,负责运维由系统组件构成的服务,确保服务稳定运行。SRE职责涵…

关于Redis哨兵机制实验操作步骤

需要搭建帮助的可以去taobao搜索Easy Company技术服务,谢谢!!! 需要搭建帮助的可以去taobao搜索Easy Company技术服务,谢谢!!! 一、配置哨兵(sentinel) 创建三个哨兵配置文件&…

基于51单片机的智能门禁系统设计与实现

1. 项目背景与需求分析 随着社会的不断发展,智能化门禁系统在现代安全领域应用越来越广泛。智能门禁系统通过单片机的控制功能,结合指纹模块和液晶显示模块,能够实现便捷、高效、安全的身份认证管理。基于STC89C52单片机的设计,具…

【大前端vue:组件】vue鼠标滑动:平滑滚动效果 向左、向右

【大前端vue&#xff1a;组件】vue鼠标滑动&#xff1a;平滑滚动效果 向左、向右 <template><div class"tab-container"><div class"tab-wrapper"><h2 class"main-title">鼠标滑动&#xff1a;平滑滚动效果 向左、向右…

某养老产业公司管理诊断项目成功案例纪实

某养老产业公司管理诊断项目成功案例纪实 ——从短期和长期出发&#xff0c;提供转型改革建议 【客户行业】养老行业 【问题类型】问题诊断 【客户背景】 某养老产业公司是一家主要从事养老服务为主的企业&#xff0c;主营业务包括社区养老服务、居家养老、康复训练服务等…

Python的3D可视化库【vedo】1-4 (visual模块) 体素可视化、光照控制、Actor2D对象

文章目录 6. VolumeVisual6.1 关于体素6.2 显示效果6.2.1 遮蔽6.2.2 木纹或磨砂效果 6.3 颜色和透明度6.3.1 透明度衰减单位6.3.2 划分透明度标量梯度6.3.3 设置颜色或渐变6.3.4 标量的计算模式6.3.5 标量的插值方式 6.4 过滤6.4.1 按单元格id隐藏单元格6.4.2 按二进制矩阵设置…

DAY5 C++运算符重载

1.类实现> 、<、!、||、&#xff01;和后自增、前自减、后自减运算符的重载 代码&#xff1a; #include <iostream>using namespace std; class Complex {int rel;int vir; public:Complex(){};Complex(int rel,int vir):rel(rel),vir(vir){cout << "…

qt 封装 调用 dll

这个目录下 &#xff0c;第一个收藏的这个 &#xff0c;可以用&#xff0c; 但是有几个地方要注意 第一.需要将dll的头文件添加到qt的文件夹里面 第二&#xff0c;需要在pro文件里面添加动态库路径 第三&#xff0c;如果调用dll失败&#xff0c;那么大概需要将dll文件放在e…

hbuilder 安卓app手机调试中基座如何设置

app端使用基座 手机在线预览功能 1.点击运行 2.点击运行到手机或者模拟器 3.制作自定义调试基座 4.先生成证书【可以看我上一篇文档写的有】&#xff0c;点击打包 5.打包出android自定义调试基座【android_debug.apk】,【就跟app打包一样需要等个几分钟】 6.点击运行到手…

快速将请求头构建成json结构

1.背景 有时候我们要爬虫(组包)请求一个资源数据,需要构建与原始请求一样的请求头,从浏览器复制过来的请求头,有很多,如果一个一个的配置成json有点慢,那么如何快速构建呢? 今天就使用正则表达式的方式实现 正则表达式实现快速将请求头构建成json结构 将冒号后边的换行符去掉…

Flink如何基于数据版本使用最新离线数据

业务场景 假设批量有一张商户表&#xff0c;表字段中有商户名称和商户分类两个字段。 批量需要将最新的商户名称和分类的映射关系推到hbase供实时使用。 原实现方案 a.原方案内容 为解决批量晚批问题&#xff0c;批量推送hbase表时一份数据产生两类rowkey&#xff1a;T-1和…

基于事件驱动的websocket简单实现

websocket的实现 什么是websocket&#xff1f; WebSocket 是一种网络通信协议&#xff0c;旨在为客户端和服务器之间提供全双工、实时的通信通道。它是在 HTML5 规范中引入的&#xff0c;可以让浏览器与服务器进行持久化连接&#xff0c;以便实现低延迟的数据交换。 WebSock…

F5-TTS文本语音合成模型的使用和接口封装

F5-TTS文本语音生成模型 1. F5-TTS的简介 2024年10月8日&#xff0c;上海交通大学团队发布&#xff0c;F5-TTS (A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching) 是一款基于扩散Transformer和ConvNeXt V2的文本转语音 (TTS) 模型。F5-TTS旨在生成流…

elementui table子级tree懒加载bug

1. 删除子级刷新列表子级依然显示 2.更新状态子级列表未刷新 3.编辑子级后刷新页面显示状态未变更 el-table 树表格load源码 首先&#xff0c;load可以执行&#xff0c;但是只剩一个子节点就有问题&#xff0c;那么就直接可以定位bug在load方法里&#xff1a; 文件路径&am…

SQL语句错误号:Incorrect integer value: ‘‘ for column ‘poi_id‘ at

SQL语句错误号&#xff1a;Incorrect integer value: for column poi_id at通用解决方案 在MySQL 5.7中&#xff0c;如果你遇到 Incorrect integer value: for column poi_id at row 1 错误&#xff0c;这通常意味着你尝试将一个空字符串插入到需要整数值的字段中。以下是几…

在springBoot项目如何对本地配置文件和云服务配置文件独立配置

springBoot中配置文件本地和云服务配置文件独立配置 1.首先我们创建好一个springBoot项目后&#xff0c;需要再创建两个application.yml配置文件&#xff0c;如图 2.然后在各自的配置文件中配置各自环境的信息&#xff0c;注意的是在创建各自环境的yml文件时&#xff0c;必须…

【分布式事务】二、NET8分布式事务实践: DotNetCore.CAP 框架(本地消息表) 、 消息队列(RabbitMQ)、 多类型数据库(MySql、MongoDB)

介绍 DotNetCore.CAP简称CAP, [CAP]是一个用来解决微服务或者分布式系统中分布式事务问题的一个开源项目解决方案, 同样可以用来作为 EventBus 使用,CAP 拥有自己的特色,它不要求使用者发送消息或者处理消息的时候实现或者继承任何接口,拥有非常高的灵活性。我们一直坚信…

aippt:AI 智能生成 PPT 的开源项目

aippt&#xff1a;AI 智能生成 PPT 的开源项目 在现代办公和学习中&#xff0c;PPT&#xff08;PowerPoint Presentation&#xff09;是一种非常重要的展示工具。然而&#xff0c;制作一份高质量的PPT往往需要花费大量的时间和精力。为了解决这一问题&#xff0c;aippt项目应运…

一文说清flink从编码到部署上线

引言&#xff1a;目前flink的文章比较多&#xff0c;但一般都关注某一特定方面&#xff0c;很少有一个文章&#xff0c;从一个简单的例子入手&#xff0c;说清楚从编码、构建、部署全流程是怎么样的。所以编写本文&#xff0c;自己做个记录备查同时跟大家分享一下。本文以简单的…