
文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载导读本文是 90DaysOfDevOps 学习路线图中 CI/CD 阶段的开篇Day 71围绕「什么是 Jenkins」这一核心问题展开。文章先厘清持续集成Continuous Integration的两种落地模式——夜间构建与持续开发再对比 TravisCI、Bamboo、Buildbot、Apache Gump 等同类 CI 工具的定位随后深入 Jenkins 的核心特性、Pipeline 概念、Master/Slave 架构并结合仓库中 CICD/Jenkins 目录下的真实 YAML 配置与 Jenkinsfile给出从源码与配置层面理解 Jenkins 的完整路径。读完本文你将能解释 Jenkins 为何在 CI 工具中占据主流地位理解其构建-测试-部署流水线的执行闭环并为后续在 Kubernetes 中亲手部署 JenkinsDay 72 起建立知识基础。从「什么是 Jenkins」说起Jenkins 是一个持续集成Continuous IntegrationCI工具它让新编写的代码能够持续地完成开发、测试与部署。在 90DaysOfDevOps 的路线图里它属于 CI/CD 章节中承上启下的关键角色前面几周我们已经用 Git 管理代码、用 Terraform/Ansible 管理基础设施而 Jenkins 正是把「代码变更 → 自动化验证 → 交付部署」这条链路串起来的调度中枢。在本仓库中与本文主题对应的配套代码位于 2022/Days/CICD/Jenkins包括用于 Kubernetes 部署的命名空间、持久卷、服务账号等 YAML 文件以及 Pipeline/Jenkinsfile 这样的流水线定义它们是理解 Jenkins 实际工作方式的极佳素材。两种集成模式夜间构建 vs 持续开发要让代码库保持健康本质上只有两条路可选Jenkins 的出现正是为了解决第二条路的自动化问题。模式一夜间构建Nightly Builds这是传统意义上「较老」的代码集成方式开发者在白天各自开发自己的任务到当天结束时把变更统一推送到源代码仓库到了夜间CI 系统运行单元测试并构建软件第二天早上团队再根据结果修复问题。模式二持续开发Continuous Development这是更被推崇的方式开发者仍然随时向源代码仓库提交变更但每一次代码提交完成之后构建过程会立刻被触发而不是等到夜里。仓库配套流程图Day71_CICD2.png展示的就是这种「提交即构建」的形态。这两种模式的意义在于当开发团队分布在全球各地时我们不需要为「每天何时停止提交代码」设定一个固定时间。Jenkins 正是扮演那个 CI Server 的角色负责控制这些测试与构建过程。同类 CI 工具对照Jenkins 为什么主流Day 71 文档也列举了几个值得后续研究的同类工具理解它们的定位有助于解释「为什么 Jenkins 被普遍认为最流行」工具定位与特点TravisCI托管的分布式持续集成服务用于构建和测试托管在 GitHub 上的软件项目Bamboo支持并行运行多个构建以加快编译内置连接代码仓库的功能内置 Ant、Maven 构建任务Buildbot用 Python 编写的开源框架用于自动化软件的构建、测试与发布流程支持跨多平台的分布式、并行任务执行Apache Gump面向 Java 项目的专用工具设计为每夜构建并测试 Java 项目确保所有项目在 API 与功能层面相互兼容而 Jenkins 本身同样开源是用 Java 编写的自动化服务器automation server它通过持续集成来自动化软件开发过程并支持持续交付Continuous Delivery。注意文档中提到「看到 Jenkins 作为整体上最流行的 CI 工具」是作者的个人观察与判断属于经验性陈述而非精确的量化结论此处仅转述原文档的观点不作额外的排名或数据断言。Jenkins 的核心特性Jenkins 的特性覆盖很广Day 71 文档归纳为五点每一点的背后都有对应的工程含义易于安装Easy InstallationJenkins 是一个自包含self-contained的基于 Java 的程序为 Windows、macOS 和 Linux 提供现成的安装包开箱即用。易于配置Easy Configuration通过 Web 界面即可完成设置与配置界面内置错误检查与帮助文档降低上手门槛。插件Plug-insUpdate Centre 提供了大量插件可与 CI/CD 工具链中的许多工具集成。仓库的 jenkins-values.yml 就是一个典型例子它通过controller.installPlugins声明了 Kubernetes、workflow-aggregator、git、configuration-as-code 等插件及其版本installPlugins: - kubernetes:1.31.3 - workflow-aggregator:2.6 - git:4.10.2 - configuration-as-code:1.55.1可扩展Extensible除了现成插件Jenkins 的插件架构本身提供了近乎无限的扩展可能性这是它能覆盖海量使用场景的根本原因。分布式DistributedJenkins 可以轻松地将工作分发到多台机器上执行从而加速跨多平台的构建、测试与部署。Jenkins Pipeline把流程自动化Day 71 文档提到的 Pipeline 概念在仓库配套的 Pipeline 目录 中有非常具体的呈现。整体流程是你向 Jenkins 提交代码Jenkins 构建出应用、运行全部自动化测试当每个步骤完成后发布并部署代码——Jenkins 正是让这个流程自动化的引擎。在仓库中Pipeline/Jenkinsfile 展示了一个使用 Kubernetes 动态 Agent 的真实流水线它通过podTemplate定义了一个包含maven:3.8.1-jdk-8与 kaniko 两个容器的 Pod然后按「Clone Repository → Build Image → Test Image」的阶段依次执行其中 kaniko 容器负责真正地把应用构建为容器镜像/kaniko/executor --context \pwd --destination ...。这正体现了 Jenkins Pipeline 的典型形态流水线即代码Pipeline as Code。Jenkins 架构从 CI 闭环到 Master/Slave安装与部署的多种可能Jenkins 可以安装在多种操作系统上Windows、Linux、macOS也支持以 Docker 容器方式部署以及部署进 Kubernetes。本文后续路线会在 minikube 集群中安装 Jenkins 来模拟 Kubernetes 部署场景。仓库中 CICD/Jenkins 目录下的 YAML 文件正是为这一目标准备的。CI 流水线的完整闭环Day 71 文档用七步拆解了 Jenkins 驱动的持续集成闭环仓库中的流程图Day71_CICD5.png与这一描述完全对应Step 1开发者将变更提交到源代码仓库。Step 2Jenkins 按固定间隔检查仓库拉取任何新代码。Step 3构建服务器把代码构建为可执行产物——示例中使用 Maven 作为广为人知的构建服务器。Step 4如果构建失败反馈被送回开发者。Step 5Jenkins 将构建好的应用部署到测试服务器——示例中使用 Selenium 作为测试服务器。Step 6如果测试失败反馈被传递给开发者。Step 7如果测试全部成功就可以发布到生产环境。这个循环是持续不断的正是它让应用可以在「分钟级」而非「小时、天、月、年」内完成更新。Master/Slave 与企业版Jenkins 架构中还有更多的内容它具备 master-slave 能力master 可以把任务分发到 slave Jenkins 环境执行。仓库 jenkins-values.yml 中的agent配置块正是对这套分布式能力的具体化——它定义了 Jenkins 的 inbound agent 镜像jenkins/inbound-agent、agent 命名空间、资源请求/限制、podRetention: Never构建完成后即回收 agent Pod等参数并允许通过podTemplates为默认 Kubernetes cloud 自定义 Pod 模板。另外作为开源项目很多企业需要商业支持CloudBees 就是 Jenkins 的企业版本为付费企业客户提供支持与更多功能。Day 71 文档以博世Bosch作为企业级落地案例的示例。下一步从理解走向动手Day 71 的核心是建立「Jenkins 是什么、为什么、怎么工作」的概念框架。Day 72 将进入动手环节用 Helm 在 minikube 上真正部署 Jenkins、创建第一个 Pipeline。你可以提前浏览 steps.md 了解部署步骤概览并对照 jenkins-namespace.yml、jenkins-volume.yml、jenkins-sa.yml 三个清单理解命名空间、持久化与 RBAC 权限三个关键设计。参考资源仓库中的完整部署步骤 steps.mdHelm values 详解jenkins-values.yml流水线示例Jenkinsfile持续集成概念可结合本仓库 CI/CD 章节的其他文档与 2022/Days/CICD 目录配套阅读。继续学习请进入 Day 72上手 Jenkins。赞分享文档/教程【免费下载链接】90DaysOfDevOpsThis repository started out as a learning in public project for myself and has now become a structured learning map for many in the community. We have 3 years under our belt covering all things DevOps, including Principles, Processes, Tooling and Use Cases surrounding this vast topic.项目地址https://gitcode.com/gh_mirrors/90/90DaysOfDevOps点击查看免费下载相关推荐Mooncake架构设计原理为什么KVCache中心化是LLM服务的未来Mooncake架构设计原理为什么KVCache中心化是LLM服务的未来 Mooncake作为专为LLM推理场景设计的高性能分布式键值KV Cache存储引擎人工智能大模型模型推理服务后端90DaysOfDevOps 第 66 天Ansible Playbooks 进阶——任务与处理器拆分、Roles 与 Ansible Galaxy 实战90DaysOfDevOps 第 66 天Ansible Playbooks 进阶——任务与处理器拆分、Roles 与 Ansible Galaxy 实战 本文档/教程90DaysOfDevOps 第 35 天Git 版本控制全景图——从为什么到第一个 Commit90DaysOfDevOps 第 35 天Git 版本控制全景图——从为什么到第一个 Commit 在进入 Git 的具体命令之前先回答两个根本问题什么是文档/教程上一篇NocoBase 模板打印插件实战指南Word/Excel/PPT 模板占位符、动态数据填充与 PDF 输出下一篇从 0 到 1 给 three.js 画面加上半色调网点DotScreenPass 后处理完整上手创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考