你以为是同一个工具的两个名字?错了,它们早已分道扬镳,而选择哪一个,可能直接影响你的项目效率。
1. 渊源:一山不容二“老头”
要理解Jenkins和Hudson的关系,我们得回到过去。
1.1 从Hudson开始的故事
Hudson是由Sun公司在2004年启动的持续集成工具,第一个版本于2005年在java.net发布。到2007年,Hudson逐渐取代CruiseControl和其他开源构建工具,成为市场领头羊。
它在2008年JavaOne大会上还获得了“杜克选择大奖”。
1.2 分道扬镳
2010年Oracle对Sun的收购改变了一切。所有权问题导致项目贡献者和Oracle之间出现分歧,最关键的是“Hudson”这个商标名称的归属问题。
当Oracle在2010年12月声明拥有该名称并申请商标的权利后,矛盾激化了。
2011年1月,社区投票决定将项目名称从“Hudson”改为“Jenkins”。一个月后,Oracle表示将继续开发Hudson,认为Jenkins只是一个分支。
于是,一个社区分裂成了两个项目。
1.3 截然不同的命运
分叉后,两个项目的命运截然不同:
- Jenkins:社区活跃,迅速发展。到2013年12月,GitHub上的Jenkins拥有567个项目成员和约1,100个公共仓库
- Hudson:日渐式微。同期只有32个项目成员和17个公共仓库
更明显的是,Hudson最新的版本发布于2016年,而Jenkins的开发却异常活跃。所以当有人问你“应该使用Jenkins还是Hudson”时,答案非常明确:选择Jenkins。
2. 基础:Jenkins是什么,能做什么?
2.1 Jenkins的自我修养
Jenkins是一个自包含的、开源的自动化服务器,可用于自动化与构建、测试和交付或部署软件相关的各种任务。
它可以安装在几乎所有有Java运行环境的机器上。
2.2 不只是持续集成
虽然Jenkins最初以其持续集成能力闻名,但现在的Jenkins已经扩展到整个CI/CD(持续集成/持续交付)领域。
它主要实现三种自动化:
- 触发自动化:通过定时触发、代码库变更等规则自动触发任务
- 执行自动化:执行用户定义的构建、测试、部署流程
- 通知自动化:将任务结果通知给相关人员
需要注意的是,Jenkins并不是“什么都能做”的魔术师。它的强大在于支持各种方式来调用自动化脚本,如Ant、Maven、Shell、Batch、PowerShell、Python、Groovy等。
但自动化脚本是需要用户自己去编写的。
3. 实践:从概念到第一个流水线
3.1 核心概念解析
在深入Jenkins之前,先了解几个关键概念:
- Node(节点):指能够执行Jenkins任务的机器,分为主节点和代理节点
- Agent(代理):本质上与Slave是同一个概念,只是更政治正确的新称呼
- Stage(阶段):流水线中的一个逻辑划分,如构建、测试、部署
- Step(步骤):阶段内的具体执行步骤
在脚本式流水线中使用node

最低0.47元/天 解锁文章
414

被折叠的 条评论
为什么被折叠?



