【Jenkins】Jenkins自动化工具介绍

news2024/12/23 4:58:58

目录

  • 技术背景
    • 常规的手动打包步骤
  • 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安装与部署

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

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

相关文章

阿里云9元服务器租用收费价格表_免费云服务器领取

2024年最新阿里云服务器租用费用优惠价格表,轻量2核2G3M带宽轻量服务器一年61元,折合5元1个月,新老用户同享99元一年服务器,2核4G5M服务器ECS优惠价199元一年,2核4G4M轻量服务器165元一年,2核4G服务器30元3…

出海企业如何从海外云手机中受益?

随着全球化的推进,越来越多的企业开始将目光投向海外市场。然而,不同国家和地区的网络环境、政策限制,以及语言文化的差异,给出海企业的市场拓展带来了诸多挑战。在这一背景下,海外云手机作为一种新兴解决方案&#xf…

等保测评2.0——网络安全等级保护测评的初步了解

一、什么是网络安全等级保护测评? 二、网络安全等级保护,保护的是什么? 等级保护对象:网络安全等级保护工作直接作用的对象。(注:主要包括信息系统、通信网络设施和数据资源等) 计算机信息系统…

设计模式代码实战-抽象工厂模式

1、问题描述 小明家新开了两个工厂用来生产家具,一个生产现代风格的沙发和椅子,一个生产古典风格的沙发和椅子,现在工厂收到了一笔订单,请你帮他设计一个系统,描述订单需要生产家具的信息。 输入试例: 3 …

【设计模式】六大设计原则

设计原则 研究 23 种设计模式是困难的,甚至是没必要的六大设计原则零、单一职责原则开闭原则里氏代换原则依赖倒置原则接口隔离原则迪米特法则合成复用原则 研究 23 种设计模式是困难的,甚至是没必要的 设计模式有23种,我认为对普通人来说想…

【Python】读取时间判定操作次数问题和一些解决办法

几种类 datetime.striptime() 计算两个字符串之间的时间差 datetime.striptime()计算两个字符串之间的时间差 datatime类提供函数处理日期和时间 Striptime()分析字符串值以固定格式表示时间然后存储为函数参数 输出就是: time.sleep() time模块打印时间按照对…

python--递归算法篇

1、给定一个包含n1个整数的数组nums,其数字在1到n之间(包含1和n), 可知至少存在一个重复的整数,假设只有一个重复的整数,请找出这个重复的数 def repeat(ls:list) -> list:#把个数超过1的数&#xff0c…

AutoCAD 2024 安装注册教程

前言 大家好,我是梁国庆。 本篇分享的安装包是 AutoCAD 的全新版本——AutoCAD 2024,下文安装教程中简称 AutoCAD。 时间:2024年4月8日。 获取 AutoCAD 安装包 我已将本篇所使用的安装包打包上传至百度云,扫描下方二维码关注…

014:vue3 van-list van-pull-refresh实现上拉加载,下拉刷新

文章目录 1. 实现上拉加载,下拉刷新效果2. van-list,van-pull-refresh组件详解2.1 van-list组件2.2 van-pull-refresh组件 3. 完整案例4. 坑点:加载页面会一直调用加载接口 1. 实现上拉加载,下拉刷新效果 通过下拉刷新加载下一页…

DMA的认识

DMA介绍 Q:什么是DMA? DMA( Direct Memory Access,直接存储器访问 ) 提供在 外设与内存 、 存储器和存储器 、 外设 与外设 之间的 高速数据传输 使用。它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU ,在这个时间中&am…

Matlab与ROS(1/2)---Message(三)

0. 简介 消息是ROS中交换数据的主要容器。主题和服务使用消息在节点之间传输数据。为了标识其数据结构,每条消息都有一个消息类型。例如,来自激光扫描仪的传感器数据通常以sensor_msgs/LaserScan类型的消息发送。每种消息类型标识消息中包含的数据元素。…

汽车制造业PMC组态应用最佳实践

01案例及行业介绍 汽车制造工业是我国国民经济的重要支柱产业,汽车制造工厂一般包含冲压、焊装、涂装、总装四大车间。每辆汽车的生产过程被分解成很多加工任务下发给各个车间进行完成。车辆从冲压车间开始到总装车间结束一直进行不同类型的工序加工。 PMC即生产控…

docker 上达梦导入dump文件报错:本地编码:PG GBK,导入女件编码:PGGB18030

解决方案: 第一步进入达梦数据容器内部 docker exec -it fc316f88caff /bin/bash 第二步:在容器中 /opt/dmdbms/bin目录下 执行命令 cd /opt/dmdbms/bin./dimp USERIDSYSDBA/SYSDBA001 FILE/opt/dmdbms/ZFJG_LJ20240407.dmp SCHEMASZFJG_LJUSERIDSYSD…

ChatGPT基础(二) ChatGPT的使用和调优

文章目录 ChatGPT的特性采用关键词进行提问给ChatGPT指定身份提升问答质量的策略1.表述方式上的优化2.用"继续"输出长内容3.营造场景4.由浅入深,提升问题质量5.预设回答框架和风格 ChatGPT的特性 1.能够联系上下文进行回答 ChatGPT回答问题是有上下文的&…

微服务学习 Eureka注册中心

服务调用时候出现问题,当服务者很多时候,比如不同的端口。消费者如何找到服务者的地址?又如何判断服务者是否健康。 Eureka基本原理: 总结:如果有多个服务提供者,消费者该如何选择? 搭建Eureka注册中心: 1.…

django基于python的法院执法案件管理系统

本课题使用Python语言进行开发。代码层面的操作主要在PyCharm中进行,将系统所使用到的表以及数据存储到MySQL数据库中,方便对数据进行操作本课题基于WEB的开发平台,设计的基本思路是: 框架:django/flask 后端&#xff…

【YOLOv9改进[损失函数]】使用MPDIou回归损失函数帮助YOLOv9模型更优秀

本文中,第一部分概述了各种回归损失函数,当然也包括了今天的主角MPDIou。第二部分内容为在YOLOv9中使用MPDIou回归损失函数的方法。 1 回归损失函数(Bounding Box Regression Loss) 边界框回归损失计算的方法包括GIoU、DIoU、CI…

纯css实现switch开关

代码比较简单&#xff0c;有需要直接在下边粘贴使用吧~ html: <div class"switch-box"><input id"switch" type"checkbox"><label></label></div> css&#xff1a; .switch-box {position: relative;height: 25px…

全球媒体发稿:海外发稿数字期刊Digital Journal

全球媒体发稿&#xff1a;海外发稿数字期刊Digital Journal ​官网&#xff1a; digitaljournal.com 数字期刊&#xff0c;加拿大知名门户&#xff0c;月访量超过30万。 是一个全球媒体平台和内容合作伙伴&#xff0c;通过捕捉和报道第一&#xff0c;提升新闻周期中的声…

顶顶通呼叫中心中间件-SIP分机安全(mod_cti基于FreeSWITCH)

介绍 运行在公网的FreeSWITCH服务器&#xff0c;每天都会接收到很多恶意的呼叫请求和注册请求&#xff0c;尝试盗打电话。合理的配置可以防止电话给倒打&#xff0c;但是每天大量的攻击&#xff0c;会让FS产生很多日志&#xff0c;降低FreeSWITCH的处理能力&#xff0c;cti模块…