一、概念

  近几年,DevOps理念一致处于一个比较热门的状态。我每个月在工作群或者技术交流群都会看到这个名词出现。前年,当我第一次看到这个“DevOps“,我压根不知道这是一个什么样的东西。但是我知道,这个东西一定很重要。后面慢慢查阅资料、与其他技术人员交流,我才知道:

DevOps(Development和Operations的组合)是一组过程、方法与系统的统称。它用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。其出现是由于软件行业日益清晰地认识到为了按时交付软件产品和服务,开发和运营工作必须紧密合作的问题。

  总而言之,就是“开发运维一体化”,把涉及的所有上下游打通,使其紧密协作。而Jenkins就是Devops里的一个技术工具。通过这个工具,可以实现持续集成、持续交付、持续部署。

持续集成:CI(Continuous Integration)持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

持续交付:CD(Continuous Delivery)通常是指开发人员对应用的更改会自动进行错误测试并上传到存储库(如 GitHub 或容器注册表),然后由运维团队将其部署到实时生产环境中。这旨在解决开发和运维团队之间可见性及沟通较差的问题。因此,持续交付的目的就是确保尽可能减少部署新代码时所需的工作量。

持续部署:CD(Continuous Deploy)指的是自动将开发人员的更改从存储库发布到生产环境,以供客户使用。它主要为了解决因手动流程降低应用交付速度,从而使运维团队超负荷的问题。持续部署以持续交付的优势为根基,实现了管道后续阶段的自动化。

  常说的CI/CD,就是指以上的一个CI和两个CD,这也是DevOps的一个核心。

二、Jenkins起源

  Jenkins,前身叫做Hudson。Hudson是在2004年的夏天由Sun公司(就是开发Java的那家)开发的,2005年2月开源并发布了第一个版本。

  Hudson发布的时候,CruiseControl是CI界的老大哥,但是很快,在大约2007年的时候Hudson已经超越CruiseControl。2008年5月的JavaOne大会上,Hudson获得了开发解决方案类的Duke's Choice奖项。从此,小弟翻身做大哥,Hudson成为CI的代名词。

  2009年6月,乌龟壳(Oracle)收购Sun,所有人都炸裂了。2010年9月,乌龟壳公司偷偷把Hudson®™变成了注册商标。2010年11月,Hudson社区的核心开发人员发现并angry了,双方进行了不太友好的会谈,不出意料的谈崩了。圣诞节过后,2011年的第一场雪,比以往来的要晚一些,几个秃顶的大叔在McDonald‘s的豪华包间里做了一个艰难的决定:mv -f hudson jenkins。

  从此,Jenkins 诞生。

三、Jenkins 优缺点

  Jenkins是一款使用Java语言开发的开源的自动化服务器。通常用于

    1. 持续集成(CI)

    2.1 持续交付(CD)

    2.2 持续部署(CD)

  优势:

    1.开源免费

    2.跨平台

    3.支持分布式

    4.操作界面可视化

    5.丰富的插件支持

    6.过程标准化

    7.减少人工时间消耗

   缺点:

    1.系统资源占用大

    2.需要专用服务器

    3.配置/定制所需的时间

    4.漏洞

    5.效率

四、使用体验

  作为了Jenkins的两年使用者,我觉得这个工具还是十分好用的。虽然时不时有些漏洞被发现,但是不影响项目的使用。下一篇随笔,继续介绍Jenkins的使用。