【CI/CD·入门篇】CI/CD到底是什么:从手动部署到一键上线的演进之路
前言如果你经历过这样的场景——开发人员写完代码用 FTP 把文件传到服务器上手动重启应用然后在浏览器里刷新看看有没有跑起来——你就会理解 CI/CD 出现的意义。这篇文章带你从零开始理解 CI/CD 的本质以及它如何从一次次深夜上线的痛苦中诞生。一、部署的黑暗时代手动操作有多痛在没有自动化之前一次典型的部署流程是这样的1. 开发人员本地跑通代码提交到 SVN/Git2. 运维人员从仓库拉取代码本地编译打包3. 停掉线上服务替换旧的 jar/war 包4. 重启服务手动检查日志确认是否正常5. 如果出问题再手动回滚到旧版本这套流程的问题**速度慢**一次部署动辄半小时到几小时**不可重复**每次操作步骤略有不同取决于谁来操作**容易出错**漏传一个文件、配错一个参数就是一次线上事故**回滚困难**旧版本在哪里配置文件改了哪些一问三不知**无法审计**谁在什么时间改了什么全凭记忆**踩坑提示**很多团队至今还在用FTP 手动重启的方式部署不是因为他们不知道 CI/CD而是觉得项目就两三个人不值得搞自动化。但事实是越是小团队越需要用自动化来减少人为错误。二、CI/CD 是什么拆解三个字母CI/CD 是一个缩写实际上包含了两个或三个概念CIContinuous Integration持续集成核心思想开发人员把代码频繁地每天多次合并到主干分支每次合并都自动触发构建和测试。解决的问题代码冲突积攒到发版时才解决合并地狱merge hell。CI 的关键要素代码提交 → 自动拉取 → 自动构建 → 自动测试 → 结果反馈 ↑ 失败则通知成功则继续CDContinuous Delivery持续交付核心思想在 CI 的基础上保证代码随时可以发布到生产环境。每次通过测试的代码都处于可发布状态但发布动作需要人手动触发。解决的问题发版前要准备很久不确定当前代码到底能不能上线。CDContinuous Deployment持续部署核心思想在持续交付的基础上更进一步——通过测试的代码自动部署到生产环境无需人工干预。**注意区分**Continuous Delivery持续交付和 Continuous Deployment持续部署的缩写都是 CD区别在于部署是否需要人工点击发布按钮。下一篇会详细讲。三、CI/CD 流水线的标准形态一条完整的 CI/CD 流水线Pipeline通常包含以下阶段[代码提交] → [编译构建] → [单元测试] → [代码扫描] → [打包镜像] → [部署测试环境] → [集成测试] → [部署预发环境] → [验收测试] → [部署生产环境] ↑ ↓ └────────────────────────────── 失败则中断并通知 ────────────────────────────────────────────────────┘每个阶段的作用| 阶段 | 做什么 | 失败的后果 ||------|--------|-----------|| 代码提交 | 触发流水线 | 流水线不启动 || 编译构建 | 编译代码检查语法错误 | 立即中断通知开发 || 单元测试 | 运行自动化测试 | 中断代码有逻辑问题 || 代码扫描 | 静态分析检查安全漏洞和代码规范 | 警告或中断取决于规则 || 打包镜像 | 构建 Docker 镜像并推送到仓库 | 无法进入部署阶段 || 部署测试环境 | 自动部署到测试环境 | 测试无法进行 || 集成测试 | 端到端功能验证 | 中断通知测试团队 || 部署预发环境 | 部署到与生产同构的环境 | 需人工排查 || 验收测试 | 业务验收 | 通知产品团队 || 部署生产环境 | 正式上线 | 回滚机制启动 |**培训要点**新手搭建流水线时不需要一开始就把所有阶段都加上。建议从构建 → 单元测试 → 部署测试环境三步开始逐步增加阶段。四、一个最小 CI/CD 示例GitHub Actions用一个最简的例子感受 CI/CD 的运作方式。以下是一个 GitHub Actions 的 Workflow 文件# .github/workflows/ci.yml name: CI Pipeline on: push: branches: [ main ] jobs: build-and-test: runs-on: ubuntu-latest steps: # 第一步拉取代码 - name: Checkout code uses: actions/checkoutv4 # 第二步配置 Java 环境 - name: Setup JDK uses: actions/setup-javav4 with: java-version: 17 distribution: temurin # 第三步编译打包 - name: Build with Maven run: mvn clean package -DskipTests # 第四步运行单元测试 - name: Run tests run: mvn test # 第五步构建 Docker 镜像并推送 - name: Build and push Docker image run: | docker build -t myapp:${{ github.sha }} . docker push myregistry.com/myapp:${{ github.sha }} # 第六步部署到测试环境 - name: Deploy to test environment run: | ssh deploytest-server docker pull myregistry.com/myapp:${{ github.sha }} docker-compose up -d这段配置文件做的事情每次有代码推送到main分支自动拉取代码 → 配置环境 → 编译打包 → 跑测试 → 构建镜像 → 推送到仓库 → 部署到测试服务器。全程无人值守。**踩坑提示**新手常犯的错误是把敏感信息数据库密码、SSH 私钥直接写在配置文件里。正确做法是使用 CI/CD 工具提供的 Secrets 管理功能GitHub 的 Repository Secrets、GitLab 的 CI Variables、Jenkins 的 Credentials。五、CI/CD 带来的改变引入 CI/CD 前后的对比| 维度 | 引入前 | 引入后 ||------|--------|--------|| 部署频率 | 一周一次甚至一个月一次 | 一天多次 || 部署耗时 | 30分钟-2小时 | 3-10分钟 || 部署成功率 | 70-80% | 99% || 回滚方式 | 手动找旧包、手动替换 | 一键回滚到上一版本 || 团队状态 | 上线日通宵、精神紧绷 | 随时部署、心态从容 || 问题发现时机 | 线上用户投诉 | 自动化测试阶段就拦截 |关键变化不只是速度提升更重要的是信心——每次部署前你已经知道代码通过了编译、测试和扫描而不是祈祷它能跑起来。六、本篇要点回顾1. CI/CD 是从手动部署的痛苦中诞生的自动化实践2. CI 持续集成频繁合并代码自动构建测试CD 持续交付/持续部署3. 流水线由多个阶段串联失败即中断4. 从最小的三步流水线开始构建→测试→部署逐步增加阶段5. 敏感信息必须使用 Secrets 管理不要硬编码下一篇预告《核心概念全解构建、测试、集成、交付、部署与回滚》——我们将深入每个阶段的实际含义和操作细节为后续工具实战打下认知基础。

相关新闻

Split文件怎么打开?判断分卷类型再用Win解压缩处理

Split文件怎么打开?判断分卷类型再用Win解压缩处理

很多人拿到 Split 文件后第一反应是找一款能直接打开的软件,但 Split 并不是一种固定格式,它只是"被拆分后的文件"的统称。要正确处理它,得先搞清楚它是压缩分卷、普通二进制切片,还是某个软件的专用分段文件。只有确认…

2026/8/2 7:36:21 阅读更多 →
手握“金钥匙”:市场岗位证书如何有效撬动个人收入增长?

手握“金钥匙”:市场岗位证书如何有效撬动个人收入增长?

引言:在不确定性中寻找确定性在当今快速变化、竞争激烈的市场环境中,个人职业发展面临着前所未有的挑战与机遇。学历的“敲门砖”作用正在被重新定义,而能够直接证明专业能力、与市场需求紧密挂钩的岗位证书,正成为职场人提升个人…

2026/8/2 7:35:21 阅读更多 →
东莞中央空调维修-欧米到家金牌师傅全城区30分钟火速上门覆盖东城/南城/虎门/长安等全域各镇街 专治不制冷/漏水/异响/跳闸

东莞中央空调维修-欧米到家金牌师傅全城区30分钟火速上门覆盖东城/南城/虎门/长安等全域各镇街 专治不制冷/漏水/异响/跳闸

在东莞,中央空调突发故障是家庭、商铺与写字楼的高频烦心事——中央空调不制冷、内机漏水、外机异响跳闸、开机没反应等问题,往往在盛夏高温时集中爆发。很多用户会搜索“东莞中央空调维修”“东莞附近中央空调上门师傅”“东莞中央空调漏水维修电话”寻…

2026/8/2 7:35:21 阅读更多 →

最新新闻

Grove多通道气体传感器:从原理到实战,快速构建环境监测系统

Grove多通道气体传感器:从原理到实战,快速构建环境监测系统

1. 项目概述:从“闻”到“测”,气体传感器的平民化革命几年前,当我第一次接触环境监测项目时,面对市面上琳琅满目的气体传感器,最大的感受是“头疼”。它们往往需要复杂的电路设计、繁琐的校准流程,以及小心…

2026/8/2 10:32:43 阅读更多 →
reTerminal工业触屏终端深度排障指南:从显示异常到接口配置全解析

reTerminal工业触屏终端深度排障指南:从显示异常到接口配置全解析

1. 项目概述:为什么reTerminal的“小问题”值得深究如果你正在使用或考虑使用reTerminal这块基于树莓派CM4的计算模块打造的工业级触屏终端,那么你大概率已经或即将遇到一些“不大不小”的麻烦。屏幕突然不亮了、触摸没反应了、系统启动卡住了&#xff0…

2026/8/2 10:32:43 阅读更多 →
医学影像可视化的开源革命:MRIcroGL如何让3D脑图变得像旋转地球仪一样简单

医学影像可视化的开源革命:MRIcroGL如何让3D脑图变得像旋转地球仪一样简单

医学影像可视化的开源革命:MRIcroGL如何让3D脑图变得像旋转地球仪一样简单 【免费下载链接】MRIcroGL v1.2 GLSL volume rendering. Able to view NIfTI, DICOM, MGH, MHD, NRRD, AFNI format images. 项目地址: https://gitcode.com/gh_mirrors/mr/MRIcroGL …

2026/8/2 10:32:43 阅读更多 →
从光敏电阻到BH1750阳光传感器:I2C通信与Arduino实战指南

从光敏电阻到BH1750阳光传感器:I2C通信与Arduino实战指南

1. 项目概述:从“光敏电阻”到“阳光传感器”的认知升级很多朋友第一次接触“阳光传感器”这个词,可能脑海里蹦出来的还是学生时代电子实验课上那个小小的、圆圆的“光敏电阻”。确实,光敏电阻是感知光线最基础、最廉价的元件。但当你拿到一个…

2026/8/2 10:32:43 阅读更多 →
Grove转螺丝端子:从原型到产品的硬件连接可靠性解决方案

Grove转螺丝端子:从原型到产品的硬件连接可靠性解决方案

1. 从“Grove”到“螺丝端子”:一个硬件连接器的进化故事如果你玩过Arduino、树莓派或者任何开源硬件项目,大概率见过或者用过“Grove”接口。那个小小的四针接口,以其防呆设计和即插即用的便利性,几乎成了创客和原型开发领域的“…

2026/8/2 10:32:43 阅读更多 →
Argo Workflows 容器资源管理:Requests、Limits 与动态资源分配

Argo Workflows 容器资源管理:Requests、Limits 与动态资源分配

系列导读 你现在看到的是《Argo Workflows 工作流编排实战:从入门到生产级落地》的第 4/10 篇,当前这篇会重点解决:帮助读者在 Argo 工作流中合理配置资源,避免因资源问题导致任务失败或集群过载。 上一篇回顾:第 3 篇《Argo Workflows 参数与工件管理:让工作流数据流动…

2026/8/2 10:31:42 阅读更多 →

日新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/2 6:34:16 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/2 2:47:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/2 0:23:22 阅读更多 →