当前位置: 首页 > news >正文

【Jenkins】Jenkins自动化工具介绍

目录

  • 技术背景
    • 常规的手动打包步骤
  • Jenkins
    • 简介
    • 起源与发展
    • Jenkins的核心价值
      • 1.自动化
        • 1.1代码构建
        • 1.2测试自动化
        • 1.3自动部署
      • 2.持续集成与持续部署
        • CI/CD的概念
        • 如何减少集成问题
        • 更快速地发布软件版本
    • Jenkins优势
    • Jenkins的主要竞争对手
      • Travis CI:
      • CircleCI:
      • GitLab CI:
    • Jenkins与其他工具的比较
      • 最佳适用场景:
  • Jenkins持续集成流程说明
  • 传统部署与Jenkins自动化部署
    • 传统部署
    • 自动化部署

技术背景

在现代软件开发中,自动化已经成为了一个核心理念。然而在实际开发中,我们经常要一边开发一边测试,当然这里说的测试并不是程序员对自己代码的单元测试,而是同组程序员将代码提交后,由测试人员测试;或者就是前后端分离后,经常会修改接口,然后重新部署;这些情况都会涉及到频繁的打包部署

常规的手动打包步骤

  1. 提交代码
  2. 问一下同组小伙伴有没有要提交的代码
  3. 拉取代码并打包(war包,或者jar包)
  4. 上传到Linux服务器
  5. 查看当前程序是否在运行
  6. 关闭当前程序
  7. 启动新的jar包
  8. 观察日志看是否启动成功
  9. 如果有同事说,自己还有代码没有提交…(-_-|||

那么,有一种工具能够实现,将代码提交到git后就自动打包部署——Jenkins。Jenkins作为自动化的标杆,为我们提供了多种核心功能来简化和加速开发流。

Jenkins

简介

  • Jenkins是一个开源的、用Java编写的持续集成和持续交付(CI/CD)工具。
  • 它提供了一种简单易用的方式来自动化构建、测试和部署软件。
  • Jenkins的主要目标是帮助开发团队加快软件开发过程,提高软件质量,并通过自动化流程减少手动操作和重复性工作。
  • 中文官网:https://www.jenkins.io/zh/
    在这里插入图片描述

起源与发展

Jenkins最初是由Ohloh团队开发的 Hudson 项目的一个分支。Hudson最初是由Kosuke Kawaguchi开发,后来被Sun Microsystems收购并进一步发展。随着Sun Microsystems被Oracle收购,Hudson项目更名为Jenkins,并继续由开源社区维护和发展

Jenkins的核心价值

1.自动化

1.1代码构建
  • Jenkins支持多种编程语言和构建工具,从Java的Maven或Gradle,到JavaScript的npm或yarn,再到Python的pip,Jenkins都能轻松应对。
  • 这种自动化构建不仅仅是为了编译源代码,它还确保了在每次代码提交后,项目都是可构建的,从而避免了“在我机器上可以运行”的问题。
1.2测试自动化
  • 仅仅构建代码并不足够。我们还需要确保代码的质量和功能的正确性。
  • 通过Jenkins,我们可以轻松地在每次代码提交或定期的基础上运行测试用例,从单元测试到集成测试再到UI测试。
1.3自动部署
  • 当代码被成功构建并通过所有测试后,下一步就是将其部署到目标环境中。
  • 不论是传统的物理服务器、虚拟机,还是现代的容器和云平台,Jenkins都可以与各种部署工具和平台集成,实现代码的自动部署。

2.持续集成与持续部署

持续集成与持续部署(简称CI/CD)是现代软件交付的基石,而Jenkins正是这一过程中的关键角色。

CI/CD的概念
  • 持续集成 (CI): CI指的是在开发过程中频繁地(通常是每天)将代码集成到主干,然后运行自动化测试来验证代码质量。
    在这里插入图片描述

  • 持续部署 (CD): CD则是确保软件在任何时候都处于可以部署的状态,并允许在短时间内将新功能、改进和修复推送到生产环境。
    在这里插入图片描述

如何减少集成问题

持续集成鼓励开发者频繁提交代码,从而早期发现并解决集成问题。当每次代码提交都经过自动化测试,团队可以迅速地发现并修复问题,而不是在发布前的集成阶段。这样可以降低风险,提高软件质量,并加速交付周期。

更快速地发布软件版本

持续部署意味着软件在完成开发后可以立即部署。没有了繁琐的手工部署步骤,新功能和修复可以更快地达到用户手中。这种快速迭代的能力使得团队能够更好地响应市场需求,提高用户满意度和业务价值。

Jenkins优势

  • 持续集成
    Jenkins支持通过持续集成管道(Pipeline)来自动化构建、测试和部署。它能够检测代码的变更,并触发相应的构建和测试过程,确保及时地发现和解决问题。
    在持续集成和持续部署的世界中,集成能力是关键。Jenkins以其卓越的集成能力脱颖而出。

    • 与众多开发和运维工具的整合: Jenkins可以与众多的版本控制工具(如Git、SVN)、构建工具、测试框架、代码质量评估工具、部署平台等进行整合。这确保了软件交付流水线的流畅和自动化。
    • 构建链的自动化: Jenkins支持创建复杂的构建链,从代码提交到生产部署,每一个环节都可以自动化。这样,开发者可以专注于编写代码,而Jenkins负责处理编译、测试和部署的繁琐工作。
  • 插件生态系统
    Jenkins拥有丰富的插件生态系统,可以扩展各种功能和集成其他工具。无论是构建工具、版本控制系统、测试框架还是部署平台,都可以通过插件进行集成,满足不同项目的需求。

  • 可扩展性
    Jenkins具有良好的可扩展性,可以根据项目的需求进行定制和配置。它支持并行化构建和分布式构建,可以在多个节点上执行任务,提高构建的效率和并发能力。

  • 多平台支持
    Jenkins可以运行在各种操作系统上,包括Windows、Linux和Mac OS等。它也可以与各种开发工具和平台无缝集成,适用于不同的开发环境。

  • 可视化界面
    Jenkins提供了直观的用户界面,方便用户进行配置、监控和管理。用户可以通过Web界面轻松地创建和管理任务,查看构建结果和日志等信息

Jenkins的主要竞争对手

Travis CI:

  • 概述: Travis CI是一个基于云的CI/CD服务,为开源项目提供免费构建。
  • 特点: 它完美地与GitHub集成,配置简单,支持多种语言和环境。

CircleCI:

  • 概述: CircleCI也是一个基于云的持续集成和交付平台。
  • 特点: 它提供了Docker支持、并行运行任务等高级特性,使得构建更快、更灵活。

GitLab CI:

  • 概述: GitLab不仅仅是一个版本控制平台,它的CI/CD工具GitLab CI使其成为了一个完整的DevOps平台。
  • 特点: 与GitLab紧密集成、自动化的DevOps流水线、Kubernetes支持等。

Jenkins与其他工具的比较

工具优势劣势
Jenkins插件生态丰富,可扩展性强。
长期的社区支持和成熟度。
灵活性高,适合多种环境和需求。
由于历史原因,某些部分的界面和体验可能显得过时。
需要自己托管和维护。
Travis CI & CircleCI完全云基础的,不需要自己托管。
良好的GitHub集成。
为开源项目提供免费计划。
对于大型企业可能显得功能不足。
可能存在计费问题,特别是对于大量的构建任务。
GitLab CI完整的DevOps解决方案,从源代码管理到CI/CD。
强大的Kubernetes集成。
对于只需要CI/CD的团队来说,可能有些功能过多或冗余。

最佳适用场景:

工具场景
Jenkins当需要高度定制化或特定于环境的流水线时,或在拥有复杂的工作流和大量的插件需求时,Jenkins是一个理想的选择
Travis CI & CircleCI对于小到中型的项目,特别是GitHub项目,它们是很好的选择。特别是当你希望迅速启动并无需管理基础设施时。
GitLab CI当需要一个完整的DevOps平台,包括源代码管理、代码审查、CI/CD和监控时,GitLab CI是一个强大的选项。

Jenkins持续集成流程说明

在这里插入图片描述

  1. 首先,开发人员每天进行代码提交,提交到 Git 仓库,测试人员进行合并;
  2. 然后, Jenkins 作为持续集成工具,使用 Git 工具到 Git 仓库拉取代码到集成服务器,再配合 JDK ,Maven 等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新再执行一次整个流程。
  3. 最后, Jenkins 把生成的 jar 或 war 包分发到测试服务器或者生产服务器,测试人员或用户就可以访问应用。

传统部署与Jenkins自动化部署

传统部署

在这里插入图片描述

自动化部署

搭建上述持续集成环境可以把整个构建、部署过程自动化,很大程度上减轻工作量。对于程序员的日常开发来说不会造成任何额外负担——自己把代码提交上去之后,服务器上运行的马上就是最新版本,一切都发生在无形中。
在这里插入图片描述

下一章:Jenkins安装与部署

相关文章:

【Jenkins】Jenkins自动化工具介绍

目录 技术背景常规的手动打包步骤 Jenkins简介起源与发展Jenkins的核心价值1.自动化1.1代码构建1.2测试自动化1.3自动部署 2.持续集成与持续部署CI/CD的概念如何减少集成问题更快速地发布软件版本 Jenkins优势Jenkins的主要竞争对手Travis CI:CircleCI:GitLab CI: Jenkins与其他…...

课时93:流程控制_函数进阶_综合练习

1.1.3 综合练习 学习目标 这一节,我们从 案例解读、脚本实践、小结 三个方面来学习。 案例解读 案例需求 使用shell脚本绘制一个杨辉三角案例解读 1、每行数字左右对称,从1开始变大,然后变小为1。    2、第n行的数字个数为n个&#xf…...

oracle创建整个数据库的只读账户

在源用户readonly 下创建只读用户 reader readonly 的表空间为AA 一、创建只读用户 create user reader identified by 密码 default tablespace AA; 二、授权 grant connect to reader ; 三、获取原账号readonly 的查询权限 select grant select on ||owner||.||object…...

文件名乱码危机:数据恢复全攻略

在数字化时代的浪潮中,电脑文件成为我们日常生活和工作中不可或缺的一部分。然而,有时我们会突然遭遇一个令人头疼的问题:原本清晰易读的文件名突然变成了乱码。这些乱码文件名不仅让我们无法准确识别文件内容,更可能意味着数据丢…...

Unity Standalone File Browser,Unity打开文件选择器

Unity Standalone File Browser,Unity打开文件选择器 下载地址:GitHub链接: https://github.com/gkngkc/UnityStandaloneFileBrowser简单的示例代码 using SFB; using System; using System.IO; using UnityEngine; using UnityEngine.UI;…...

面向对象的架构三段式写一篇论文

在面向对象的软件架构中,系统设计通常遵循一种“三段式”方法论,以确保软件的可扩展性、可维护性和灵活性。这种方法论包括三个核心阶段:概念化、详细设计和实现。通过这三个阶段的逐步深入,开发团队可以有效地应对复杂系统的挑战…...

npm ERR! code CERT_HAS_EXPIREDnpm ERR! errno CERT_HAS_EXPIRED

解决npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED npm ERR! request to 分析过后这个问题是证书过期的意思 考虑到其他的原因 这里给出三个解决方案 一: 清除npm缓存 npm cache clean --force 取消ssl验证: npm config set strict-…...

pytorch-多分类实战之手写数字识别

目录 1. 网络设计2. 代码实现2.1 网络代码2.2 train 3. 完整代码 1. 网络设计 输入是手写数字图片28x28,输出是10个分类0~9,有两个隐藏层,如下图所示: 2. 代码实现 2.1 网络代码 第一层将784降维到200,第二次使用…...

httpsok-快速申请谷歌SSL免费证书

🔥httpsok-快速申请谷歌SSL免费证书 使用场景: 部署CDN证书、OSS云存储证书证书类型: 单域名 多域名 通配符域名 混合域名证书厂商: ZeroSSL Lets Encrypt Google证书加密类型: ECC、 RSA 一、证书管理 进入 证书管…...

LiveGBS流媒体平台GB/T28181功能-国标级联中如何自定义通道国标编号编辑通道编号保持唯一性

LiveGBS国标级联中如何自定义通道国标编号编辑通道编号保持唯一性 1、国标级联选择通道修改2、通道编辑修改3、分屏展示设备树修改3.1、编辑名称中修改 4、分屏展示分组修改4.1、编辑名称中修改4.2、选择通道中修改 5、搭建GB28181视频直播平台 1、国标级联选择通道修改 国标级…...

mysql 大表凌晨定时删除数据

有几张表数据量非常大,一次维护量有点大(一个月有500多万条数据,并且还在往上涨), 于是想了个定时删除数据,每天凌晨执行,这样每天删除数据量就小, 循环删除,每次删除5…...

ArcGIS和ArcGIS Pro快速加载ArcGIS历史影像World Imagery Wayback

ArcGIS在线历史影像网站 World Imagery Wayback(网址:https://livingatlas.arcgis.com/wayback/)提供了数期历史影像在线浏览服务,之前不少自媒体作者在文中宣称其能代表Google Earth历史影像。 1、一点对比 (1)同一级别下的版本覆盖面 以下述区域为例,自2014年2月20…...

数据仓库的—数据仓库的体系架构

数据仓库通常采用分层的体系架构设计,作为支撑企业决策分析需求的数据基础设施。典型的数据仓库体系架构由以下三个核心层次组成: 源数据层(Source Layer) 这是数据仓库的数据来源,包括组织内部的各种运营系统,如ERP、CRM、SCM等,以及外部数据源如互联网、社交媒体等。这些系…...

【C/C++基础知识】const 关键字

文章目录 Q&A and 前言const 修饰基本变量初始化const 对象仅在文件内有效 const 的引用应用 指针与 constconst 修饰类成员函数参考写在最后 Q&A and 前言 Q:简要说一说 C 中的 const 关键字,含义以及常见的使用位置 A:const 是 C…...

Docker之数据卷和Dockerfile

Docker之数据卷与Dockerfile的详细使用介绍如下: 一、Docker数据卷 数据卷(volume)是Docker中的一个重要概念,它允许你在容器和宿主机或容器之间共享文件系统。数据卷提供了持久性存储,即使在容器被删除后&#xff0…...

pull拉取最新代码

工作区、暂存区、版本库 工作区:就是你在电脑里能看到的目录。 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。 …...

工控 modbusTCP 报文

Tx 发送报文:00 C9 00 00 00 06 01 03 00 00 00 02 Rx 接收报文:00 C9 00 00 00 07 01 03 04 01 4D 00 01 Tx 发送报文:00 C9 00 00 00 06 01 03 00 00 00 02 00 C9 事务处理标识符 2字节 00 00 协议标识符 2字节 固定 00 00 00 06 长度 2字节 表示之后的字节总数 (…...

在Ubuntu服务器上快速安装一个redis并提供远程服务

一、快速安装一个Redis 第一步:更新apt源 sudo apt update第二步:下载Redis sudo apt install redis第三步:查看Redis是否已自启动 systemctl status redis二、配置Redis提供远程服务 第一步:先确保6379端口正常开放 如果是…...

玩机进阶教程------手机定制机 定制系统 解除系统安装软件限制的一些步骤解析

定制机 在于各工作室与商家合作定制rom中有一些定制机。限制用户私自安装第三方软件。或者限制解锁 。无法如正常机登陆账号等等。定制机一般用于固定行业或者一些部门。专机专用。例如很多巴枪扫描机型等等。或者一些小牌机型。对于没有官方包的机型首先要导出各个分区来制作…...

Bilstm双向长短期神经网络多输入单输出回归分析

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 BILSTM神经网络 Bilstm双向长短期神经网络多输入单输出回归分析 完整代码: Bilstm双向长短期神经网络多输入单输出回归分析.zip资源-CSDN文库 https://download.csdn.net/download/abc991835105/89087121 效果图 结果分析 展望 …...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...