技术背景

在现代软件开发中,自动化已经成为了一个核心理念。然而在实际开发中,我们经常要一边开发一边测试,当然这里说的测试并不是程序员对自己代码的单元测试,而是同组程序员将代码提交后,由测试人员测试;或者就是前后端分离后,经常会修改接口,然后重新部署;这些情况都会涉及到频繁的打包部署

常规的手动打包步骤

  1. 提交代码
  2. 问一下同组小伙伴有没有要提交的代码
  3. 拉取代码并打包(war包,或者jar包)
  4. 上传到Linux服务器
  5. 查看当前程序是否在运行
  6. 关闭当前程序
  7. 启动新的jar包
  8. 观察日志看是否启动成功
  9. 如果有同事说,自己还有代码没有提交…(-_-|||

那么,有一种工具能够实现,将代码提交到git后就自动打包部署——Jenkins。Jenkins作为自动化的标杆,为我们提供了多种核心功能来简化和加速开发流。

Jenkins

简介

  • Jenkins是一个开源的、用Java编写的持续集成和持续交付(CI/CD)工具。
  • 它提供了一种简单易用的方式来自动化构建、测试和部署软件。
  • Jenkins的主要目标是帮助开发团队加快软件开发过程,提高软件质量,并通过自动化流程减少手动操作和重复性工作。
  • 中文官网:https://www.jenkins.io/zh/
    【Jenkins】Jenkins自动化工具介绍-LMLPHP

起源与发展

Jenkins最初是由Ohloh团队开发的 Hudson 项目的一个分支。Hudson最初是由Kosuke Kawaguchi开发,后来被Sun Microsystems收购并进一步发展。随着Sun Microsystems被Oracle收购,Hudson项目更名为Jenkins,并继续由开源社区维护和发展

Jenkins的核心价值

1.自动化

1.1代码构建
  • Jenkins支持多种编程语言和构建工具,从Java的Maven或Gradle,到JavaScript的npm或yarn,再到Python的pip,Jenkins都能轻松应对。
  • 这种自动化构建不仅仅是为了编译源代码,它还确保了在每次代码提交后,项目都是可构建的,从而避免了“在我机器上可以运行”的问题。
1.2测试自动化
  • 仅仅构建代码并不足够。我们还需要确保代码的质量和功能的正确性。
  • 通过Jenkins,我们可以轻松地在每次代码提交或定期的基础上运行测试用例,从单元测试到集成测试再到UI测试。
1.3自动部署
  • 当代码被成功构建并通过所有测试后,下一步就是将其部署到目标环境中。
  • 不论是传统的物理服务器、虚拟机,还是现代的容器和云平台,Jenkins都可以与各种部署工具和平台集成,实现代码的自动部署。

2.持续集成与持续部署

持续集成与持续部署(简称CI/CD)是现代软件交付的基石,而Jenkins正是这一过程中的关键角色。

CI/CD的概念
  • 持续集成 (CI): CI指的是在开发过程中频繁地(通常是每天)将代码集成到主干,然后运行自动化测试来验证代码质量。
    【Jenkins】Jenkins自动化工具介绍-LMLPHP

  • 持续部署 (CD): CD则是确保软件在任何时候都处于可以部署的状态,并允许在短时间内将新功能、改进和修复推送到生产环境。
    【Jenkins】Jenkins自动化工具介绍-LMLPHP

如何减少集成问题

持续集成鼓励开发者频繁提交代码,从而早期发现并解决集成问题。当每次代码提交都经过自动化测试,团队可以迅速地发现并修复问题,而不是在发布前的集成阶段。这样可以降低风险,提高软件质量,并加速交付周期。

更快速地发布软件版本

持续部署意味着软件在完成开发后可以立即部署。没有了繁琐的手工部署步骤,新功能和修复可以更快地达到用户手中。这种快速迭代的能力使得团队能够更好地响应市场需求,提高用户满意度和业务价值。

Jenkins优势

  • 持续集成
    Jenkins支持通过持续集成管道(Pipeline)来自动化构建、测试和部署。它能够检测代码的变更,并触发相应的构建和测试过程,确保及时地发现和解决问题。
    在持续集成和持续部署的世界中,集成能力是关键。Jenkins以其卓越的集成能力脱颖而出。

    • : Jenkins可以与众多的版本控制工具(如Git、SVN)、构建工具、测试框架、代码质量评估工具、部署平台等进行整合。这确保了软件交付流水线的流畅和自动化。
    • : Jenkins支持创建复杂的构建链,从代码提交到生产部署,每一个环节都可以自动化。这样,开发者可以专注于编写代码,而Jenkins负责处理编译、测试和部署的繁琐工作。
  • 插件生态系统
    Jenkins拥有丰富的插件生态系统,可以扩展各种功能和集成其他工具。无论是构建工具、版本控制系统、测试框架还是部署平台,都可以通过插件进行集成,满足不同项目的需求。

  • 可扩展性
    Jenkins具有良好的可扩展性,可以根据项目的需求进行定制和配置。它支持并行化构建和分布式构建,可以在多个节点上执行任务,提高构建的效率和并发能力。

  • 多平台支持
    Jenkins可以运行在各种操作系统上,包括Windows、Linux和Mac OS等。它也可以与各种开发工具和平台无缝集成,适用于不同的开发环境。

  • 可视化界面
    Jenkins提供了直观的用户界面,方便用户进行配置、监控和管理。用户可以通过Web界面轻松地创建和管理任务,查看构建结果和日志等信息

Jenkins的主要竞争对手

Travis CI:

  • 概述: Travis CI是一个基于云的CI/CD服务,为开源项目提供免费构建。
  • 特点: 它完美地与GitHub集成,配置简单,支持多种语言和环境。

CircleCI:

  • 概述: CircleCI也是一个基于云的持续集成和交付平台。
  • 特点: 它提供了Docker支持、并行运行任务等高级特性,使得构建更快、更灵活。

GitLab CI:

  • 概述: GitLab不仅仅是一个版本控制平台,它的CI/CD工具GitLab CI使其成为了一个完整的DevOps平台。
  • 特点: 与GitLab紧密集成、自动化的DevOps流水线、Kubernetes支持等。

Jenkins与其他工具的比较

最佳适用场景:

Jenkins持续集成流程说明

【Jenkins】Jenkins自动化工具介绍-LMLPHP

  1. 首先,开发人员每天进行代码提交,提交到 Git 仓库,测试人员进行合并;
  2. 然后, Jenkins 作为持续集成工具,使用 Git 工具到 Git 仓库拉取代码到集成服务器,再配合 JDK ,Maven 等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新再执行一次整个流程。
  3. 最后, Jenkins 把生成的 jar 或 war 包分发到测试服务器或者生产服务器,测试人员或用户就可以访问应用。

传统部署与Jenkins自动化部署

传统部署

【Jenkins】Jenkins自动化工具介绍-LMLPHP

自动化部署

搭建上述持续集成环境可以把整个构建、部署过程自动化,很大程度上减轻工作量。对于程序员的日常开发来说不会造成任何额外负担——自己把代码提交上去之后,服务器上运行的马上就是最新版本,一切都发生在无形中。
【Jenkins】Jenkins自动化工具介绍-LMLPHP

下一章:Jenkins安装与部署

04-13 05:26