CI/CD全链路 + 3种部署策略 + GitHub Actions + Nginx · SVG可视化
CI(Continuous Integration)持续集成:开发者频繁地将代码合并到主干,每次合并自动触发编译+测试,尽早发现集成问题。
CD有两个含义:
• Continuous Delivery(持续交付):CI通过后自动准备可发布产物,但部署需要人工确认。
• Continuous Deployment(持续部署):CI通过后全自动部署到生产环境,无需人工干预。
类比:CI = 自动质检(有问题立即发现),CD = 自动发货(质检通过后自动送出去)。Delivery = 质检通过后货物放到待发货区(等人确认),Deployment = 质检通过后直接发快递。
蓝绿部署:准备两套完全一样的环境(蓝=V1在线,绿=V2待命),验证通过后一次性切换所有流量到绿环境。
金丝雀部署:先让一小部分流量(5%)访问新版本,监控没问题后逐步扩大(20%→50%→100%)。
关键区别:蓝绿是"全有全无"的切换,金丝雀是"渐进式"扩大。蓝绿回滚最快(切回去就行),金丝雀风险更小(问题只影响5%用户)。
正向代理:代理的是客户端。你通过VPN/翻墙访问Google——Google不知道你是谁,只看到代理服务器。
反向代理:代理的是服务端。你访问example.com——你不知道后面有几台服务器,Nginx帮你分发请求。
记忆口诀:正向=你找代理帮你出去(代理客户端),反向=代理帮你接待客人(代理服务端)。
4个核心概念:
① Workflow:一个完整的自动化流程,定义在.github/workflows/*.yml中
② Event(on):触发条件,如push、PR、定时任务
③ Job:一个工作单元,包含多个Step,可并行或串行
④ Step:最小执行单元,一个命令或一个Action
Nginx作为反向代理,接收客户端请求后可以将请求分发到多台后端服务器,这就是负载均衡。
常见策略:
• 轮询(默认):请求依次分给每台服务器,像排队叫号
• 权重(weight):配置高的服务器分更多请求
• IP Hash:同一IP的请求总发到同一台服务器(会话保持)
• 最少连接(least_conn):发给当前连接数最少的服务器
DevOps是一种文化/方法论,核心是开发(Dev)和运维(Ops)协作,通过自动化工具缩短交付周期。
CI/CD是DevOps实践中的核心技术手段——DevOps说"开发和运维要密切合作",CI/CD就是具体怎么合作:代码改了→自动测试→自动部署。
关系:DevOps = 目标/文化,CI/CD = 工具/实践。就像"健康生活"(DevOps)和"每天运动+合理饮食"(CI/CD)的关系。
CI/CD全链路:push→拉代码→编译→测试→检查→构建镜像→推送→部署→健康检查
CI vs CD:CI=自动质检 / CD=自动发货(Delivery人工确认 / Deployment全自动)
蓝绿部署:两套环境一键切换→回滚最快→双倍资源
金丝雀部署:5%→20%→50%→100%→风险最小→部署慢
滚动部署:逐个替换→不停机→资源省→V1/V2短暂共存
Nginx反向代理:酒店前台→分发请求→负载均衡→SSL终止→静态文件直出
正向代理 vs 反向代理:正向代理客户端(翻墙) / 反向代理服务端(Nginx)