Jenkins

Jenkins 技术简介

Jenkins 是一个开源的自动化服务器,常被用于持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)的流程中。它能够帮助开发团队快速自动化构建、测试、部署等环节,大大提升软件交付效率和质量。主要特点包括:

  • 高度可扩展:拥有丰富的插件生态,几乎可以与任何常见开发工具或平台集成。
  • 可视化管理:通过 Web UI 和 Pipeline 脚本,对流水线进行集中配置和管理。
  • 可定制性强:支持多种脚本语言(Shell、Python、Groovy 等)构建自动化流水线。

Jenkins 解决了什么需求?

  • 自动化:从代码提交(push)到构建(Build)再到测试(Test),甚至部署(Deploy)的全流程自动化。
  • 持续反馈:及时发现和修复代码缺陷,提高团队沟通和协同效率。
  • 敏捷开发支持:敏捷开发往往强调快速迭代、持续交付,Jenkins 完全贴合这一理念。

技术栈专业用语

  1. 敏捷开发(Agile Development)

    • 强调迭代式开发、小步快跑、快速交付。
    • 结合 Jenkins 等工具快速验证并发布增量功能。
  2. 持续集成(Continuous Integration, CI)

    • 将团队成员的代码频繁地合并到主干分支,并通过自动化构建和测试,保证代码质量。
  3. 持续交付(Continuous Delivery, CD)

    • 在持续集成的基础上,进一步自动化部署环节。只要构建成功且通过测试,即可随时部署到生产或接近生产的环境。
  4. Pipeline(流水线)

    • 指的是一系列自动化执行的步骤,用于将应用从源代码到可交付的软件(制品)的过程。Jenkins 中可以用 Jenkinsfile(Groovy 语法)编写流水线脚本。

Jenkins 相同技术栈的主流优势

主流地位

Jenkins 是目前最主流、使用最广泛的开源 CI/CD 工具之一。在企业和开源社区都有广泛应用,可谓业界标准。

同类技术比较

  • GitLab CI:与 GitLab 深度集成,配置简便,但对于非 GitLab 仓库的使用需要额外配置。
  • GitHub Actions:使用 GitHub 提供的 Actions 来实现 CI/CD,集成 GitHub 仓库使用更为便捷,但对其他仓库需要配置或桥接。
  • CircleCI / Travis CI:云端服务为主,一般不需要自建服务器,对配置灵活性要求高时略显不足。
  • Atlassian Bamboo:与 JIRA、Bitbucket 等 Atlassian 家产品集成度高,缺点是商业软件,需要许可证。

Jenkins 的优势

  • 插件生态丰富:几乎可以对接所有常见技术栈,如 Docker、Kubernetes、AWS、Slack 等。
  • 高度可定制:Pipeline 思想和脚本化配置让流水线完全按照团队需求“私人订制”。
  • 自部署:对数据安全或内网环境有高要求的企业可通过自建 Jenkins 来满足需求。

Jenkins 的劣势

  • 需要维护:自建 Jenkins 需要团队一定的 DevOps 能力来维护服务器、升级插件。
  • 配置复杂:初学者对于插件、Job、Pipeline 等概念可能需要一点时间熟悉。

Jenkins 核心优势与官方地址

  • 开源且社区活跃:任何问题都能在社区论坛或官方文档中找到答案。
  • 与主流开发技术轻松集成:例如 Docker、Kubernetes、Git、Maven、Gradle 等。
  • 功能齐全:通过插件可实现从单体应用到微服务的各种自动化需求。

Jenkins 官方地址: https://www.jenkins.io/


结合 Git / Java Spring Boot / Docker / Jenkins 的整合思路

  1. Git

    • 用作版本控制和代码托管。
    • Jenkins 通过 Git 插件或直接拉取 Git 仓库代码,触发构建。
  2. Java Spring Boot

    • 应用程序本身采用 Spring Boot 框架编写。
    • 在 Jenkins 上可使用 Maven 或 Gradle 对项目执行编译和测试。
  3. Docker

    • 把 Spring Boot 打包成 Docker 镜像,部署更方便且环境一致性高。
    • Jenkins 中可以通过 Docker 插件或者 Shell 脚本执行 docker build,并推送到镜像仓库(如 Docker Hub、Harbor 等)。
  4. Jenkins

    • 建立包含以下阶段的流水线:
      1. Checkout(从 Git 拉取代码)
      2. Build & Test(Maven/Gradle 构建并执行自动化测试)
      3. Docker Build(打包应用进 Docker 镜像)
      4. Push Image(推送镜像到仓库)
      5. Deploy(将最新镜像部署至测试或生产环境)

在 CI/CD 中 Jenkins 处于哪些阶段、主要承担哪些角色

  1. 持续集成(CI)阶段

    • Jenkins 负责在每次代码合并/提交后,自动触发构建和测试流程。
    • 如果测试失败,会及时通知开发者,快速进行修复。
  2. 持续交付/部署(CD)阶段

    • 构建成功后,Jenkins 可以自动将构建产物(Jar 包或 Docker 镜像)发布到测试环境进行验证。
    • 通过脚本或插件完成生产环境的滚动升级或蓝绿部署。

在整个 Pipeline 流程中,Jenkins 扮演了“协调者”和“自动化引擎”的角色

  • 协调者:整合 Git、Maven/Gradle、Docker 等多方工具。
  • 自动化引擎:根据 Pipeline 配置或 Jenkinsfile,分阶段有序执行。

如何学习并运用 Jenkins

  1. 环境准备

    • 准备一台服务器或者本地安装 Jenkins(通过 Docker 或者直接安装)。
    • 安装时可先选择默认插件,熟悉界面和基本概念。


      image.png
  2. 入门概念学习

    • Job/项目:Jenkins 最基本的构建单元,可用 Freestyle 或 Pipeline 项目。
    • Pipeline:建议重点学习 Pipeline 语法(Declarative 或 Scripted Pipeline)。
    • 插件:了解常用插件,如 Git、Maven、Docker、Email 等。
  3. 实践操作

    • 第一个 Freestyle 项目:配置代码仓库和构建脚本,成功跑通一次构建。
    • Pipeline 项目:使用 Jenkinsfile 将构建步骤脚本化,体验流水线的灵活和可读性。
    • 与 Docker 集成:编写脚本执行 docker build + docker push,完成自动化打包和推送镜像。
    • 与部署环境集成:可在成功构建后自动触发脚本进行部署或调用其他服务(如 Kubernetes)。
  4. 持续改进

    • 了解如何添加测试报告、代码覆盖率报告(如 Jacoco 插件),实现质量可视化。
    • 结合团队敏捷开发节奏,通过 Jenkins 及时反馈与发布应用功能。
  5. 社区与文档

    • 官方文档: https://www.jenkins.io/doc/
    • 社区论坛/博客:跟进最新插件、最佳实践和案例,学习如何排查问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容