Jenkins 系列: (一) Jenkins 概述


   Jenkins 作为一个自动化构建任务的工具或者平台,在持续集成、持续交付、持续部署、DevOps等概念持续发酵的背景下,发挥着越来越重要的作用。作为 Jenkins的爱好者和实践推广者,本人有6年多的Jenkins使用和管理经验,Certified Jenkins Engineer,曾担任第一届北京Jenkins Area Meetup 讲师,第一届Jenkins User Conference China大会workshop讲师,Jenkins相关的课程培训讲师等。所以计划将Jenkins使用中的一些心得进行总结,记录下来供更多的Jenkins使用者学习和交流。


如何学习及使用Jenkins?

     对于Jenkins的初学者或者初级用户而言,如何快速高效的学习掌握Jenkins这个工具呢?


 学习任何一个工具,无外乎 “学习”+“实践”! 

 

 不过每个人学习习惯不同,有的人喜欢先从学习文档入手,经过系统的学习后再进行实践;有的人喜欢先从实践入手,直接安装使用,进行各种尝试,搞不懂的时候再去搜索查阅各种文档;有的则是学习和实践同时进行,照着列子去学习。这里我不去评价哪种学习方式更好,个人体会推荐如下的学习过程


 1. 浏览Jenkins官网文档,学习第一手资料

     官网(https://jenkins.io/doc/)上有详尽的Jenkins使用和管理文档,英文文档。英语还可以的同学,建议优先学习官网文档,掌握Jenkins相关的基本概念和术语,Jenkins的安装方法等。

 

  有的同学可能会问,我只是作为Jenkins的使用者,不是工具管理员,还需要学习Jenkins的安装方法吗?答案是 需要的。通过实践Jenkins的安装启动,再到界面使用及管理,能够加深你对Jenkins的感性和理性认识,这些知识储备对于Jenkins的一些高级用法是非常必要的。比如你了解了Jenkins的存储方式,才能够理解Jenkins archive 文件会存储到Master上,及时构建是在slave上进行的,以及archive大文件造成的一些潜在问题(网络,磁盘,性能等)。

     

  中文不好的同学,可以参看一些官方的中文翻译网站,比如 https://www.w3cschool.cn/jenkins/

  

 2. 实践很重要,可以使用docker方式尽情折腾

      Jenkins 支持多种部署方式,对于初学者建议使用docker容器部署方式,这种方式快捷简便,而且不担心折腾对宿主机的影响。


 3. 应该学习掌握哪些内容?

  •  Jenkins的安装部署,不要求对所有的部署方式都去实践,根据你的服务器OS类型选择适配的安装方式即可, 或者通过docker 快速部署也可以

  •  了解基本概念和术语,比如 Master、Slave、Project、Job、Build、View、build Queue、build history等等

  •  掌握最基本的Job类型,Freestyle 和Pipeline ,创建并运行构建,体验Jenkins 用户界面

  •  通过Freestyle job,掌握常用功能,比如参数,历史构建清理,邮件通知,查看log等;了解高级的功能比如 并发构建,定时构建,代码自动触发构建,上下游构建,创建视图管理Jobs等等。

  •  了解掌握Pipeline类型Job的语法及其使用方法

  •  了解Jenkins的一些基本admin功能,比如 用户及权限管理,Slave和Credentials的创建及管理,Jenkins的备份机制等等

  •  了解Jenkins的API 和CLI 相关知识,便于jenkins的二次开发任务等


Jenkins是什么?


Jenkins 系列: (一) Jenkins 概述_第1张图片

  Jenkins 基于JAVA的开源的自动化系统平台,可以加速自动化CI,CD任务及流水线,支持几乎所有类型的任务:构建,测试,部署等。


  Jenkins 有着丰富的插件生态系统支持功能扩展,“Core + plugins”的模式使得Jenkins生命力更强。Jenkins有1400+ 插件,涵盖SCM, 测试, 通知, 报告, Artifact, 触发, 外部集成等各个方面,用户通过选择安装合适插件,基本上可以满足业务需求。当然,Jenkins 也支持用户创建自己的插件,扩展性极强。

  Jenkins 基于Web的管理和使用界面,普通用户和系统管理员可以通过web界面进行操作,使用方便。


  Jenkins的Rest API 及CLI 接口,又给Jenkins 二次开发提供了便利。


  Jenkins支持分布式构建架构,通俗的讲,除了直接使用Master进行构建外,可以创建多个slave (Linux,windows,容器等),将构建任务通过slave进行分担Master的计算能力,以满足构建任务对不同环境的需求。


  以上都是Jenkins的一些所谓的长处,当然Jenkins也有一些局限性或者不足之处。比如 Jenkins是就有Java的应用,业务比较多的情况下(Job、build、slave数量多),Jenkins对内存和CPU的消耗比较大,达到一定瓶颈时也存在Java应用的异常问题。Jenkins的单点问题,一个Jenkins只有一个master,如果master java应用出现问题,整个Jenkins就不能使用了,无论挂载了多少Slave,都不能正常工作了。 Jenkins 对分布式构建的支持,和git的分布式架构可不同。还有 Jenkins的存储方式也有一定的潜在问题,Jenkins的配置以及Job、build等数据都是以文件的形式存储在磁盘上,需要Jenkins管理员额外做备份,避免单机宕机造成的数据丢失以及应用无法恢复的问题。


后续计划

 后面我会陆续将Jenkins知识点以专题的形式进行总结,也欢迎感兴趣的同学针对想交流的内容留言,我将总结整理后分享。



你可能感兴趣的:(jenkins)