专栏首页DevOps持续交付Jenkins常见问题集锦(八)

Jenkins常见问题集锦(八)

问题36:Hudson和Jenkins是什么关系?

参考:两者都是采用Java语言编写的持续集成开源工具。

实际上,Jenkins是Hudson的一个分叉(fork)。

Hudson由Sun公司在2004年启动,第一个版本于2005年在java.net发布。

2007年开始Hudson逐渐取代CruiseControl和其他的开源构建工具的江湖地位。

在2008年的JavaOne大会上在开发者解决方案中获得杜克选择大奖。

在2010年11月期间,因为Oracle对Sun的收购带来了Hudson的所有权问题。

主要的项目贡献者和Oracle之间,尽管达成了很多协议,但有个关键问题就是商标名称“Hudson”。

甲骨文在2010年12月声明拥有该名称并申请商标的权利。

因此,2011年1月11日,有人要求投票将项目名称从“Hudson”改为“Jenkins”。

2011年1月29日,该建议得到社区投票的批准,创建了Jenkins项目。

2011年2月1日,甲骨文表示,他们打算继续开发Hudson,并认为Jenkins只是一个分支,而不是重命名。

因此,Jenkins和Hudson继续作为两个独立的项目,每个都认为对方是自己的分支。

到2013年12月,GitHub上的Jenkins拥有567个项目成员和约1,100个公共仓库,与此相对的Hudson有32个项目成员和17个公共仓库。

到现在两者的差异更多,应该说Jenkins已经全面超越了Hudson。

此外,大家可能是出于讨厌Oracle的情绪,作为Java开发者天然地应该支持和使用Jenkins。

从两个项目的logo,大家也可以看到两个项目之间的亲戚关系,都是两个老头。后来Hudson被Oracle捐给了Eclipse基金会,所以Hudson老头有个Eclipse的光环加持。

Hudson已经停止开发,多年没有发布新版本(最新的版本发布于2016年),而Jenkins的社区和开发却异常活跃,Jenkins 2.x版本更是将其扩展到CD领域。

Jenkins1已是目前市场上使用最多的CI/CD工具。

问题37:Jenkins的插件和共享库有什么异同点?什么时候用插件,什么时候用共享库?

参考:共享库是Pipeline类型任务才能使用的特性。

插件侧重于扩展Jenkins系统本身的功能,范围更广。如定义新的任务类型(Pipeline就是通过插件实现的),新的参数类型,新的触发器类型,新的SCM类型,新的通知类型,新的权限策略,新的云类型等等。

插件也可以定义新的构建步骤,在freestyle任务中以图形界面方式配置,可以通过优化兼容Pipline任务,通过DSL方式调用。

Pipeline也有专门的API,用来定义新的DSL步骤(只能通过代码方式调用)。

插件使用Java语言编写,共享库使用Groovy语言编写,共享库中又可以调用插件提供的DSL步骤。

插件的使用需要将插件包安装到Jenkins master上才能生效,如果是升级,还需要重启master。

共享库则是在Jenkins系统中配置好共享库的地址即可使用,并且可以指定使用不同的分支。共享库代码的修改可以实时生效。

最佳实践来讲,插件提供工具级别的通用步骤(积木),共享库实现功能步骤(搭积木),对步骤进行组合,在多个Jenkins任务间共享。类似于API和APP的关系。

问题38:Jenkins什么都能做吗?

参考:明确Jenkins是一个自动化服务器。它可以让你的操作自动化,自动主要包括三个部分,一个是触发自动化,可以通过一定的规则设置自动触发Jenkins任务。比如定时触发,或者代码库有变更提交时触发,或者代码库内容有变化时触发等等。第二个则是执行自动化;第三个是通知自动化。而第二部分内容是用户自己定义的,Jenkins的便利之处是支持 各种方式来调用自动化脚本。如ant、maven、sh、bat、powershell、python、groovy等,而自动化脚本是需要用户自己去编写的。只有先把操作改造后可以通过自动化脚本实现后,才能将其对接到Jenkins上,让其自动执行。所以Jenkins工程师应十分熟悉自动化原则和各类自动化脚本语言和自动化工具,并为团队的操作自动化工作提供建议和指导。

问题39:slave、node、agent是什么关系,有区别吗?

参考:概念上基本同意。agent可以看作slave的新称呼(因slave有奴隶的意思……)。用法上,作为Pipeline关键字有少许区别。在脚本式流水线中,使用node来指定执行节点;在声明式流水线中,是使用agent关键字,agent关键字下面又有node、docker、kubernetes等关键字。

问题40:Jenkins如何对接Ant、Maven等工具?

参考:此类构建工具在Jenkins中有两种使用方法。

一种是在Jenkins全局工具配置中进行预配置,设置工具名称和路径,使用时指定名称。这种方式的优点是Jenkins可以自动将构建工具安装到agent机器上,并将可执行文件添加到PATH目录。不便之处是需要预配置,使用时需要显示指定名称,自动安装则需要机器能够访问外网。

另一种方式是直接在agent机器上预先安装好对应的工具,并将其可执行文件配置到系统PATH目录。这种方式的优点是使用时可以直接使用antmvn命令。缺点就是需要预安装了,但也可以避免机器不能访问外网导致任务执行失败的问题。预安装也使得agent的环境更可控。实践上agent都是需要安装一些工具的,并且做到了自动化安装。增加一个工具工作量差别并不大。

如果Jenkins使用环境是外网,并且Ant、Maven都使用默认配置(仓库地址等),可以使用第一种方式。其他情况建议使用第二种。

本文分享自微信公众号 - DevOps持续交付(devopscd),作者:左手编程右手文化

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Jenkins——the thing which auto everything

    今天突然想起来原先的关注者可能还不知道Jenkins是什么,上来就是Jenkins常见问题,有些突兀。是我交代不清楚,所以这篇就来介绍一下。注意...

    DevOps持续交付
  • 通过Jenkins启动的进程构建后总是退出?这个插件帮助你解决这个问题!

    但是正常情况下,通过Jenkins Job启动的进程,在构建结束后,都会被Jenkins杀死。

    DevOps持续交付
  • Jenkins常见问题集锦(一)

    参考:Jenkins和Docker结合可以将容器作为Jenkins的slave节点,有很多优点。比如实现执行环境的统一,slave的自动创建和销毁,免去了人工维...

    DevOps持续交付
  • 自动更新、易于使用的 Jenkins

    当我第一次 写 Jenkins Evergreen 相关的文章 , 后来被称为 “Jenkins Essentials”,我提到的一系列的未来的发展在接下来的几...

    LinuxSuRen
  • Centos 7 下安装 Jenkins

    Jenkins是一个开源的支持自动化构建、部署等任务的平台。基本上可以说是持续集成(CI)、持续发布(CD)不可或缺的工具。

    武培轩
  • Happy Second Birthday Jenkins X!

    始于 2019 年初的 Jenkins X 项目在去年的1月14号庆祝了它的第一个生日,这对任何开源项目来说都是一件大事,我们刚刚又庆祝了它的第二个生日。

    LinuxSuRen
  • 轻量化 Jenkins 最佳实践

    前言 今天分享主题主要分成三个部分: 第一部分,Jenkins跟持续交付; 第二部分,Jenkins轻量化思路; 第三部分,Jenkins高可用实践。 一、Je...

    DevOps时代
  • DevOps 三剑客:Dev,Ops and Jenkins

    每一位开发、测试和运维工程师,都有一个私人管家,他的名字叫Jenkins. Jenkins World就像这位管家的生日Party,大家聚在一起狂欢,分享Jen...

    DevOps时代
  • Jenkins as Code-基础设施-项目-系统配置

    Jenkins的安装和部署相对简单,安装方式有很多。 可以使用一些常见的配置管理工具(Ansible、Puppet、Chef)进行安装部署,还可以使用Docke...

    泽阳
  • X 战警降临,Jenkins X 正式发布

    重磅消息,Jenkins X 已经正式发布啦!(文末有福利) Jenkins X is a CI / CD platform for Kubernetes 早...

    DevOps时代

扫码关注云+社区

领取腾讯云代金券