Jenkins是什么?我们先来以初学者的角度来简单的介绍下Jenkins。然后讲解Jenkins的应用场景以及Jenkins的特点。如果你已经了解Jenkins,那么你可以选择性的跳过本次的章节。
1.1 Jenkins简介
本小节主要讲解Jenkins的简介、应用场景、特点。通过以上内容让大家对Jenkins有个初步的认识。
Jenkins是企业里面应用最广的、开源的持续集成系统。在企业里面不管是中小型企业还是大型企业,甚至有一些专门做DevOps的厂商也在基于Jenkins来做CI/CD平台。Jenkins是开源免费的,用java语言开发的CI/CD系统。可以用Jenkins来做CI也可以用来做CD。Jenkins本质上是用来做任务的编排和可视化的一套工具。
以上是对Jenkins的介绍,那关于Jenkins的安装是支持跨平台的。可以在windows、Linux以及mac os上面部署和运行
Jenkins的另外一个特点(也是存在缺陷的地方),功能比较齐全是因为有丰富的插件库。基本上有1-2千个可以使用的插件。这些插件对可以无限的去扩展Jenkins一些功能
尽量少安装一些没用的插件,如果插件过多没有更新管理。当在Jenkins更新的时候可能会因为插件的原因导致
Jenkins启动不了。刚开始咱们学的时候就要把习惯养好,不要装太多没用的插件。
回想18年的时候我们还在大量使用自由风格(freestyle)类型的项目,并没有使用Pipeline特性。 而目前Jenkins大量应用Pipeline类型的项目来进行作业构建。Pipeline类型的项目是可以通过代码进行描述的。可以通过Pipeline+Groovy对Jenkins延伸扩展,例如可以直接导入Groovy的package对Jenkins Pipeline扩展。所以使用这种模式我们将不再关心有没有实现哪些功能插件了,而是直接编写特性代码来实现功能。
这里只是给大家点一下,Pipeline语法部分后面我们会详细的去讲解。现在了解下即可。
1.2 Jenkins的应用场景
其实在分享Jenkins的具体应用场景时,不能只从运维或者开发的角度去讲,而应该是从不同的角度。例如:谁在用Jenkins。
对于运维同学, 一直在使用Jenkins。使用Jenkins来对管理运维相关的任务。for example, 清理一下镜像仓库里面的垃圾镜像,那准备写了个脚本,跑一下就清理完了。可以将脚本集成到Jenkins, 编写Jenkins Pipeline在流水线里面去运行脚本。 还可以通过参数化构建进行参数传递。
手动在机器上面或者通过Jenkins运行的脚本内容都是一样的,但是jenkins可以按照不同的阶段运行并将日志和运行的进度可视化的展示出来。
对于开发同学, 每天都要提代码。例如: 代码提到版本控制系统之后,能够自动的去跑一些对提交代码验证的任务。没有Jenkins之前通过编写脚本结合Crontab定时任务来定期轮询版本控制系统。 有了Jenkins之后可以开启构建触发器轻松实现系统之间的集成。
对于测试同学,一般都会写一些测试用例。 没有Jenkins之前在本机上面通过命令行直接去运行。有了Jenkins之后可以将代码存储到版本控制系统然后通过Jenkins自动化地运行测试用例。还可以通过一些现有的工具对测试结果进行分析。
Jenkins就是一个中间人的角色, 如果你有一个脚本需要由Jenkins来运行。其实Jenkins启动一个shell来执行脚本。大概率出现的问题都是脚本的自身原因导致的而并非是Jenkins的执行错误。
例如: Jenkins集成maven进行构建和打包,出现编译失败的错误就需要找开发同学查看代码了。这一块之前本人是踩到坑踩的比较多了,这点经验还是告诉大家。
那除了上面描述的场景外,其实还有很多场景。可以这样认为: 你想要自动化的一些东西,都可以通过Jenkins来帮你去完成。
1.3 Jenkins的特点
Jenkins的特点:开源免费、安装简单。主从的分布式架构,分为Server和Agent。 Server主要是负责作业调度,Agent是Pipeline真正运行的节点。 (此处类似于Kubernetes的架构,尽量不要在主控节点运行任务)
可视化的管理页面:通过UI管理页面对Jenkins系统进行配置管理。 BlueOcean更加简洁和漂亮的UI页面。
Jenkins2.0核心特性:Pipeline As Code,以代码的方式描述流水线作业。特别适合大规模下的流水线复用,即多条流水线使用相同一套流水线模板。
评论