前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3天学会Jenkins_Jenkin与CI(Continuous Integration,持续集成)?

3天学会Jenkins_Jenkin与CI(Continuous Integration,持续集成)?

作者头像
别打名名
发布2019-12-23 15:43:10
7320
发布2019-12-23 15:43:10
举报
文章被收录于专栏:小白AI.易名小白AI.易名

1 什么是持续集成?

持续集成(Continuous Integration)即是发生在每一次的代码提交后,立即开始软件的构建(Build)和测试(Test),在一个拥有许多开发人员的大型项目中,一天中会多次提交,伴随着每个提交代码的构建和测试,如果测试通过,则测试构建以进行部署。如果部署成功,则代码将推送到生产环境。提交(commit),构建(build),测试(test)和部署(deploy)是一个连续的过程,因此称为持续集成/部署。

持续集成流水线是一种功能强大的工具,由一组用于托管,监控,编译和测试代码或监控代码更改的工具组成,比如:

  • 持续集成服务器有:Jenkins, Bamboo, CruiseControl, TeamCity等等
  • 源码版本控制工具:GIT,CVS, SVN, Mercurial, Perforce, ClearCase等等
  • 编译构建工具:Make, CMake, ANT, Maven, Ivy, Gradle等等
  • 自动测试框架:Selenium, Appium, TestComplete, UFT等等

在本文中,你将学会:

  • 什么是持续集成?
  • 什么是Jenkin?
  • Jenkin历史
  • 为什么选择Jenkins做持续集成服务器?
  • 持续集成的实际案例研究
  • 使用Jenkins的优点
  • 使用Jenkins的缺点

2 什么是Jenkin?

Jenkins是一个开源的持续集成服务器,能够编排一系列操作,用自动化方式帮助你实现持续集成过程。Jenkins完全用Java编写。Jenkins是世界上广泛使用的应用程序,安装量约为300k,并且日益增长。它是一个基于Web服务器的应用程序,需要像Apache Tomcat这样的Web服务器。Jenkins变得如此受欢迎的原因在于它监督项目开发过程中出现的重复任务。例如,如果你的团队正在开发项目,Jenkins将不断测试你的项目,并在开发的早期阶段向你显示相关错误。

通过使用Jenkins,软件公司可以加速他们的软件开发过程,因为Jenkins可以快速自动化构建和测试。Jenkins通过构建,测试,文档化软件,部署和软件开发生命周期的其他阶段来支持软件的完整开发生命周期。

3 Jenkin历史

  • Kohsuke Kawaguchi, 一个Java开发者,在SUN Microsystems工作,厌倦了重复构建代码和修复错误。2004年,创建了一个名为Hudson的自动化服务器,可自动构建和测试开发任务。
  • 2011年,拥有Sun Microsystems的Oracle与Hudson开源社区存在争议,因此分叉的Hudson将其重命名为Jenkins。
  • Hudson和Jenkins都继续独立运作。但是在短时间内,Jenkins得到了了很多项目的应用并有大量开源贡献者共享代码,而Hudson只剩下32个应用项目。随着时间的推移,Jenkins变得更受欢迎,而Hudson则不再受到维护。

4 为什么选择Jenkins做持续集成服务器?

有些人可能会认为开发软件的老式方法是更好的方法。让我们通过以下示例了解CI与Jenkins的优势。

让我们想象一下,大约有10个开发人员在共享存储仓库上工作。一些开发人员在25天内完成任务,而其他人则需要30天才能完成任务。

不使用Jenkins

使用Jenkins后

一旦所有开发人员完成了他们分配的编码任务,他们就会同时提交他们的代码。稍后,将进行测试和部署。代码提交已建立,测试周期非常罕见,并且在多天后完成了单个构建

一旦Developer提交代码,代码就会构建并测试。Jenkin将在白天多次构建和测试代码;如果构建成功,则Jenkins会将源代码部署到测试服务器并通知部署团队;如果构建失败,那么Jenkins会将错误通知给开发人员团队。

由于代码是一次性构建的,一些开发人员需要等到其他开发人员完成编码才能检查他们的构建

代码是在任何Developer提交后立即构建的。

隔离,检测和修复多次提交的错误并不是一件容易的事情。

由于代码是在每次提交单个开发人员之后构建的,因此很容易检测到哪些代码导致构建失败

代码构建和测试过程完全是手动的,因此存在很多失败的可能性。

自动构建和测试过程可节省时间并减少缺陷。

修复并测试所有错误后,才能部署代码。

每次成功构建和测试后都会部署代码。

开发周期缓慢

开发周期很快。

用户可以更轻松地使用新功能。增加利润。

5 持续集成的实际案例研究

我相信大家都知道诺基亚的旧手机。诺基亚曾经实施过称为夜间构建的程序。在白天多次提交多个开发人员后,每晚都会构建软件。由于该软件仅在一天内构建一次,因此在大型代码库中隔离,发现和修复错误是一件非常大的难事。

后来,他们采用了持续集成方法,一旦开发人员提交了代码,就会构建并测试该软件,如果检测到任何错误,相应的开发人员可以快速修复缺陷。

6 Jenkins插件

默认情况下,Jenkins提供一组有限的功能。如果你想在Jenkins中安装Git等版本控制工具集成,那么就需要安装与Git相关的插件。实际上,为了集成Maven,Amazon EC2等工具,你也需要在Jenkins中安装相应的插件。

7 使用Jenkins的优点

  • Jenkins由社区管理,非常开放。每个月,他们都会举行公开会议并接受公众的意见,以促进Jenkins项目的发展。
  • 到目前为止,Github上大约有4000多个issues被关闭,500多个贡献者,10000+star,该项目每3个月发布一次稳定版本,每个月都会有小版本发布
  • 随着技术的发展, Jenkins也是如此。到目前为止,Jenkins在其插件数据库中发布了大约超过1000个插件。借助插件,Jenkins变得更加强大,功能丰富。
  • Jenkins还支持基于云的架构,因此你可以在基于云的平台中部署Jenkins
  • Jenkins之所以流行,是因为它是由开发人员为开发人员创建的。

8 使用Jenkins的缺点

尽管Jenkins是一个非常强大的工具,但是它也有它的缺陷:

  • 与当前的前端UI趋势相比,它的界面过时且不便于用户使用
  • 尽管Jenkins受到许多开发人员的喜爱,但维护它并不容易,因为Jenkins在服务器上运行并需要一些技能作为服务器管理员来监控其活动
  • 许多人没有实现Jenkins的原因之一是由于难以安装和配置Jenkins
  • 由于一些小的设置变化,连续集成会定期中断。持续集成将暂停,因此需要一些开发人员的注意

9 总结

  • 在持续集成中,代码提交后,软件即刻构建和测试
  • Jenkins是一个开源的持续集成服务器,能够协调一系列操作
  • 在没有Jenkins之前,当所有开发人员完成他们分配的编码任务时,他们过去常常同时提交他们的代码,然后才进行测试和部署。
  • 在使用Jenkins之后,代码构建并在开发者提交代码后立即进行测试。Jenkin将在白天多次构建和测试代码
  • 默认情况下,Jenkins提供一组有限的功能。如果你想将Jenkins安装与Git等版本控制工具集成,那么你需要安装与Git相关的插件
  • Jenkins最大的优点是它由社区管理,该社区举行公开会议并接受公众对Jenkins项目开发的意见
  • Jenkin的最大特点是它的界面已经过时,与当前的UI趋势相比不是用户友好的

10 参考链接

  • https://jenkins.io/zh/
  • https://github.com/jenkinsci/jenkins
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 别打名名 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 什么是持续集成?
  • 2 什么是Jenkin?
  • 3 Jenkin历史
  • 4 为什么选择Jenkins做持续集成服务器?
  • 5 持续集成的实际案例研究
  • 6 Jenkins插件
  • 7 使用Jenkins的优点
  • 8 使用Jenkins的缺点
  • 9 总结
  • 10 参考链接
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档