【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安装与部署

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Go操作Kafka之kafka-go

Kafka是一种高吞吐量的分布式发布订阅消息系统,本文介绍了如何使用kafka-go这个库实现Go语言与kafka的交互。 Go社区中目前有三个比较常用的kafka客户端库 , 它们各有特点。 首先是IBM/sarama(这个库已经由Shopify转给了IBM),之…

WebGL 2.0相较于1.0有什么不同?

作者:STANCH 1.概述 WebGL 1.0自推出以来,已成为广泛支持的Web标准,既能跨平台,还免版税。它通过插件为Web浏览器带来高质量的3D图形,这是迄今为止市场上使用最广泛的Web图形,并得到Apple,Goog…

Arduino _按键点亮——led

int8_t led_pin13;int8_t led2_pin12; void setup() {// put your setup code here, to run once:pinMode(led_pin, INPUT);//输入pinMode(led2_pin, OUTPUT);//输出 }void loop() {// put your main code here, to run repeatedly:if(digitalRead(led_pin)1){//digitalRead(…

智慧校园平台解决方案-迎新管理系统

数字迎新管理系统是整个智慧校园不可缺少的一部分;主要是为了方便学校优化迎新流程,规范迎新流程,高效率的迎新,减少学生迎新繁琐流程。现阶段自友科技数字迎新利用了网络方式在网上即可提前知道迎新流程,学生家长在手…

【python】python饮料销售数据分析可视化(源码+数据集)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

高效保护,无粉乳胶手套助您安心工作

在快节奏的现代生活中,我们每天都在与各种细菌、污染物和化学品打交道,因此保护我们的身体健康变得愈发重要。特别是在工作环境中,手部是最容易受到伤害和污染的部位之一。为了提供最佳的保护,优斯特推出了一款高品质的无粉乳胶手…

Web3 的社会影响:数字社会的新时代

随着科技的不断进步和创新,人类社会正逐步进入数字化时代的新阶段。Web3 技术作为数字社会的重要组成部分,正在以前所未有的方式重塑着我们的社会生活和交往方式。本文将探讨 Web3 技术对社会的影响,以及它所带来的数字社会的新时代。 1. Web…

阻塞队列和生产消费模型

阻塞队列 阻塞队列的概念 队列相信我们已经不陌生了 之前也学过很多队列 比如: 普通队列 和 优先级队列 两种 这两种队列都是线程不安全的 而我们讲的阻塞队列 刚好可以解决线程安全问题 也是先进先出 并且带有阻塞功能. 阻塞功能是怎么回事呢 就是如果入队的时候阻塞队列为…

深入解析API技术:原理、实现与应用

在现代软件开发中,API(应用程序接口)扮演着至关重要的角色。API 允许不同的软件应用程序和系统之间进行通信和数据交换,从而构建出更加高效、灵活和可扩展的软件解决方案。本文将深入解析API技术的原理、实现方法,并附…

iptables/ebtables学习笔记

目录 一、前言 二、Netfilter 构成 三、Netfilter 转发框架 四、Netfilter 与 iptables 五、Netfilter 与 ebtables 一、前言 Netfilter 是 Linux 内核的数据包处理框架,由 Rusty Russell 于 1998 年开发, 旨在改进以前的 ipchains(Lin…

中霖教育:一级建造师能跨省考吗?

一级建造师是可以跨省考的,对于考生的户籍地并没有限制,只要符合参加考试的条件就可以报名。 但是,对于异地报名参加一级建造师考试的考生,必须经过严格的资料审核流程。考生在报名过程中需要提交居住证明、工作证明、以及异地考…

c语言例题,求数组中最大值,99乘法口诀表

例题1:求出数组中最大的值 根据题意,我们知道的是需要从一个数组中找到一个最大的元素并且输出。那首先我们先建立一个数组,然后将一些不有序的整型元素放到数组中,然后再建立一个变量来存放数组中的第一个元素,通过一…

第23次修改了可删除可持久保存的前端html备忘录:增加了百度引擎

第22次修改了可删除可持久保存的前端html备忘录视频背景分离&#xff0c;增加了本地连接&#xff0c;增加了纯CSS做的折叠隐藏修改说明 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport…

(三)ffmpeg 解码流程以及函数介绍

一、视频解码流程 二、函数介绍 1.avformat_network_init 函数作用&#xff1a; 执行网络库的全局初始化。这是可选的&#xff0c;不再推荐。 此函数仅用于解决旧GnuTLS或OpenSSL库的线程安全问题。如果libavformat链接到这些库的较新版本&#xff0c;或者不使用它们&#…

跟TED演讲学英文:The dark side of competition in AI by Liv Boeree

The dark side of competition in AI Link: https://www.ted.com/talks/liv_boeree_the_dark_side_of_competition_in_ai Speaker:Liv Boeree Date: October 2023 文章目录 The dark side of competition in AIIntroductionVocabularyTranscriptSummary后记 Introduction Co…

react 初学增删改查购物车案例

界面 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>react-购物车案例</title><…

[MQTT]Mosquitto的簡介、安裝與本機連接測試

MQTT(Message Queuing Telemetry Transport)是基於發布/訂閱模式(Publish/Subscribe)的輕量級網絡通訊協議&#xff0c;專用於在低帶寬、不可靠的網絡環境中傳輸數據&#xff0c;關於工作原理和優點如下: 1.發布/訂閱模式(Publish/Subscribe) 發布者將消息發布特定的主題(top…

MIPI CSI-2 虚拟通道

一、背景 在介绍虚拟通道之前&#xff0c;我们先描述一个场景&#xff0c;主控芯片只有 4 个 D-PHY VIN 接口&#xff0c;但是产品需要4 个以上的摄像头。 如上图所示&#xff0c;如果我们把摄像头和主控芯片直接通过 D-PHY 接口连接&#xff0c;最多只能接 4 个摄像头&#x…

【Linux】基础IO----理解缓冲区

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;理解缓冲区 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! > 专栏选自&#xff1a;Linux初阶 > 望…

Linux 系统解压缩文件

Linux系统&#xff0c;可以使用unzip命令来解压zip文件 方法如下 1. 打开终端&#xff0c;在命令行中输入以下命令来安装unzip&#xff1a; sudo apt-get install unzip 1 2. 假设你想要将zip文件解压缩到名为"target_dir"的目录中&#xff0c;在终端中切换到目标路…