Jenkins 简介

2023-11-11

Jenkins 简介

Jenkins,最开始被称作 Hudson,是一个 Java 语言编写的开源的持续集成工具。Jenkins 在持续集成领域的市场份额居于主导地位,其被各种规模的团队用于各种语言和技术的项目中,比如:.NET、Ruby、Groovy、Grails、PHP 等,当然还有 Java。

为什么要使用 Jenkins

首先,Jenkins 是易于使用的。用户界面非常简单、直观,增加了视觉上的吸引力,而且 Jenkins 作为一个整体,具有平滑的学习曲线。

其次,Jenkins 拥有良好的扩展性,能够极其灵活和方便地迎合您的想法。它有数以百计的开源插件可供使用,而且每周会有更多的开源插件贡献进来。这些开源插件覆盖系统版本控制、构建工具、代码质量度量、构建通知、外部系统集成、用户界面定制化、游戏等。而且这些插件的安装都非常快捷和简单。

最后,Jenkins 之所以受大众喜欢,得益于其开源社区的规模和活跃度。Jenkins 社区包含一个有规模的、流动的、响应式且开放态的讨论群、活跃的邮件列表、IRC 频道、有知名度的博客区和 Twitter 账户。Jenkins 社区的发展速度非常快,每周都会有新功能、新特性、以及 bug 修复和插件更新发布出来。

当然,Jenkins 也满足那些不想每周都进行产品升级的用户的需求。对于那些更喜欢尽量减少版本改动的需求,Jenkins 提供一个长期支持的版本,也就是所谓的 LTS,这个版本落后于最新发布的 Jenkins 版本,却提供更加稳定的功能和较慢的更新变化。LTS 版本每三个月发布一次新版本,新版本主要包含重要的 bug 修复和关键补丁。这个概念类似于 Ubuntu LTS 版本。

是 Jenkins,还是 Hudson?

Jenkins 从开始直到最近都以 Hudson 而被熟知。在 2009 年,甲骨文收购了 Sun 并继承了 Hudson 代码库。在 2011 年年初,甲骨文和开源社区之间的关系破裂,该项目被分成两个独立的项目:

  • Jenkins:由大部分原始 Hudson 开发人员组成
  • Hudson:甲骨文管理

从 Hudson 到 Jenkins 一个简短的故事

Jenkins 始于 2004 年 Sun 公司员工 Kohsuke Kawaguchi 基于个人爱好开发的一个名字叫 Hudson 的项目。经过几年的发展,Sun 公司内部越来越多的团队开始在各种各样的项目中使用 Hudson。2008 年年初,Sun 公司认可了这个工具的质量和价值,要求Kohsuke 把全部时间都投入到 Hudson 上,并且为 Hudson 提供专业的服务和技术支持。到 2010 年,Hudson 已经成为持续集成解决方案领域内的领头羊并拥有超过 70% 的市场份额。

2009 年,Oracle 收购了 Sun 公司。直到 2010 年年底,Hudson 开发者社区和 Oracle 之间出现了紧张关系,最初是由于 Java.net 的基础设施问题引起的,后来 Hudson 的商标问题加剧了相互之间的不愉快。这些紧张的关系也反映出大家关于把项目放在 Oracle 公司的管理之下这种方式的根本分歧。Oracle 是想要 Hudson 走向一个版本发布更慢的、更严格控制的开发过程,而以 Kohsuke 为首的大多数核心开发人员更希望像过去 Hudson 稳定工作的那样,继续维持开放、灵活、快节奏的社区主导型模式。

2011 年 1 月,Hudson 开发者社区投票通过,正式将这个项目更名为 Jenkins。随后他们把原始的 Hudson 代码迁移为一个新的 Git Hub 项目(https://github.com/jenkinsci),并在 Git Hub 上继续他们的工作。绝大多数的核心开发人员和插件开发人员都跟随 Kohsuke Kawaguchi 以及其他核心贡献者到了 Jenkins 阵营,也就是我们今天能看到大量的开发活动的地方。

经过这次事件,大部分用户也跟着 Jenkins 开发者社区转向 Jenkins。有调查显示,75% 的 Hudson 用户已经转向 Jenkins;13% 的用户依旧在使用 Hudson;另外 12% 的用户既使用 Hudson 又使用 Jenkins,或者正在迁移到 Jenkins 的过程中。

不过,Oracle 和 Son a type(开发 Maven 和 Nexus 的公司)仍在继续开发和维护 Hudson 代码库(现在也放在 Git Hub 上:https://github.com/hudson),但是关注的重点跟之前相比有很大不同。Son a type 的开发人员主要把精力集中在底层基础设施的变化和管理依赖关系注入框架以及插件体系架构的 Maven 集成上。

应该使用 Jenkins 还是 Hudson

  • 选择 Jenkins 的原因:
    • Jenkins 就是新版的 Hudson。Jenkins 使用 Hudson 的代码库,开发团队和项目管理保持不变。简而言之,最开始编写了 Hudson 核心部分的绝大部分开发人员,只是重新像以前那样在 Jenkins 上恢复了他们的工作。
    • Jenkins 社区。就像很多其他成功的开源项目一样,Hudson 的力量来源于它有一个规模庞大的、有流动性的社区以及大规模的应用。bug 的认定(修复)非常快,并且如果您遇到一些问题,别人也可能会遇到和您同样的问题。如果您遇到了自己解决不了的问题,可以把这个问题发到邮件列表里或者 IRC 频道上,一定会有人能帮助您。
    • 开发速度快。和之前的 Hudson 一样,Jenkins 延续使用众多开发人员喜欢的快速发布周期。每周都会发布新功能、新特性,以及新插件和 bug 修复;bug 修复的周转期实际上是非常短的。如果您喜欢更稳定,可以使用 LTS 版本。
  • 选择 Hudson 的原因:
    • 稳定。除非它坏了,否则您根本不用去修复它。您已经安装部署了一套令您满意的 Hudson,并且觉得没有必要升级到最新的版本。
    • 企业集成以及 Son a type 产品自带工具。Hudson 可能非常看重跟企业级工具的集成,比如:LDAP/Active Directory,还有 Son a type 公司的产品,比如:Maven 3、Nexus 和 M2Ecipse;而 Jenkins 相对于那些与其有竞争的工具来说却更加开放,比如:Artifactory 和 Gradle。
    • 插件体系架构。假如您打算编写自己的 Jenkins/Hudson 插件,您要意识到 Son a type 公司正在为 Hudson 插件提供 JSR-330 依赖项注入。尽管这将来会在 Jenkins 和 Hudson 之间产生插件兼容性的一系列问题,但对于新的开发人员来讲却是非常易用的。

无论使用 Jenkins 还是 Hudson,它们仍然非常类似,绝大多数讨论的技术和技巧都适用于两者。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jenkins 简介 的相关文章

随机推荐

  • 系数矩阵与系统稳定性的关系

    对连续时间线性定常控制系统而言 系统内部渐近稳定的充分必要条件是其系数矩阵A的特征值都在复平面的左半开平面内 对连续时间线性定常控制系统而言 系统输入 输出稳定的充分必要条件是其特征方程的根 传递函数的极点 全都在复平面的左半平面内 离散时
  • Linux的简单介绍

    LINUX操作系统是一种免费使用和自由传播的类UNIX操作系统 其内核由林纳斯 托瓦兹于1991年10月5日首次发布 是一个基于POSIX的多用户 多任务 支持多线程和多CPU的操作系统 它能运行主要的Unix工具软件 应用程序和网络协议
  • 03-03 周五 镜像安装sshd和jupyter以及修改密码

    03 03 周五 镜像安装sshd和jupyter以及修改密码 时间 版本 修改人 描述 2023年3月3日15 34 49 V0 1 宋全恒 新建文档 简介 由于在镜像中需要进行jupyter和sshd的安装 并且需要进行密码的修改 因此
  • 在 Windows 10下安装Flutter+Dart+Android Studio 配置Flutter开发环境

    在 Windows 10下安装Flutter Dart Android Studio 配置Flutter开发环境 文章首发地址 配置环境变量 由于部分网站被墙的原因 我们需要先配置Flutter国内镜像地址 这两个地址是由Flutter官方
  • html css开关按钮样式,纯CSS实现开关按钮

    上面这种开关按钮在现代网页UI设计中经常出现 代替了以前丑陋的checkbox 在很多UI框架中如elementUI都有组件可以直接使用 但是画出这样一个开关是十分简单的 不需要借助JS代码就可以实现 核心思路就是将原有input框进行隐藏
  • github响应时间过长且修改hosts无效【解决办法】

    打开ipaddress com 分别键入 github global ssl fastly net 和 github com 查询到对应的IP地址 打开hosts文件 并新增 hosts文件地址 win下 C Windows System3
  • 我提交的第一个Flink commit - Flink 闭包检查

    为什么闭包 Flink中算子都是通过序列化分发到各节点上 所以要确保算子对象是可以被序列化的 算子的成员变量 代码中的匿名内部类都是检查的范围 闭包检查入库 被调用的入口是 StreamExecutionEnvironment clean
  • Typora 常用快捷键

    文章目录 Typora 常用快捷键 一 菜单栏 二 文件 三 编辑 四 段落 五 格式 六 视图 七 设置颜色 Typora 常用快捷键 一 菜单栏 文件 alt F 编辑 alt E 段落 alt P 格式 alt O 视图 alt V
  • cahtgpt有哪些优势

    ChatGPT丨小智ai丨chatgpt丨人工智能丨OpenAI丨聊天机器人丨AI语音助手丨GPT 3 5丨开源AI平台 ChatGPT是一种基于深度学习技术的自然语言处理模型 它可以自主地从大量的文本数据中学习和理解自然语言 从而实现自然
  • hbuildx中使用真机调试

    前言 使用真机调试的原因是我开发uni app项目 调试一直是在浏览器中选择手机模式进行调试的 但是打包安装到手机以后 发现很多样式变化很大 完全不符合预期 这时我知道浏览器是不能完全匹配手机的效果的 模拟器 于是我开始找模拟器 市面上模拟
  • Dictionary字典类使用范例

    原文发布时间为 2009 11 04 来源于本人的百度文章 由搬家工具导入 using System using System Web UI WebControls using System Collections Generic publ
  • Qt

    参考博客 QThread必须要了解的几个函数 https blog csdn net t46414704152abc article details 52155777 设计思路 读文件生成sql语句写入内存为一个线程 返回sql语句给主线程
  • 机器学习之KNN检测恶意流量

    背景 任何智能活动的都可以称为人工智能 而机器学习 Machine Learning 属于人工智能的一个分支 深度学习 Deep Learning 则是机器学习的分支 近年来 随着基础设施的完善 海量大数据的积累 机器学习方法理论越来越成熟
  • uniapp icon标签

  • 使用Clang编译内联intel语法汇编的C/C++项目

    我们在编写C C 代码时 如果在有较高性能需求的时候 可以使用汇编代码来编写相应的函数 C C 直接调用即可 汇编的语法格式有两种 一种是我们在Windows下常见的Intel的语法格式 另一种是GCC下使用的AT T格式的语法 这种语法对
  • MAC上Chrome关闭黑暗模式

    方法 1 打开 Chrome 或基于 Chromium 的浏览器 2 在URL处输入 chrome flags enable force dark 确保 Force Dark Mode for Web Contents 和 Web Plat
  • pandas的引入及Series的基础操作、读取外部文件

    作用 相对于numpy pandas更进一步能帮助处理数值型数据之外的其他类型数据 比如时间序列 字符串等 常用数据类型 Series 一维 带标签数组 DataFrame 二维 Series容器 Series 创建Series数组 语法结
  • 【实用工具】利用MyBatisX插件自动生成代码

    文章目录 1 概述 2 基本使用 2 1 插件安装 2 2 集成数据库 1 概述 MybatisX 是一款基于 IDEA 的快速开发插件 为效率而生 在开发过程中 相信大家都遇到过一个数据库内有着十几张或比之更多的数据表的情况 而面对这众多
  • PHP基础

    php语法初步 php是一种运行在服务器端的脚本语言 可以嵌入到html中 php代码标记 在PHP历史发展中 可以用多种标记来区分php脚本 asp标记 短标记 以上两种基本弃用 如果要使用那么需要在配置文件中开启 脚本标记
  • Jenkins 简介

    Jenkins 简介 为什么要使用 Jenkins 是 Jenkins 还是 Hudson 从 Hudson 到 Jenkins 一个简短的故事 应该使用 Jenkins 还是 Hudson Jenkins 简介 Jenkins 最开始被称