「DeployLite」第四章:进阶功能与策略化能力
By Leeting Yan
第四章:进阶功能与策略化能力(Advanced & Strategic Features)
4.1 YAML Pipeline 定义语言(Pipeline DSL Design)
设计目标
DeployLite 的 Pipeline 定义语言(DSL)必须满足:
- 简单易懂(不超过 2 层嵌套);
- 可移植性强(无平台绑定语法);
- 支持条件、并行、审批、Artifact 传递;
- 兼容现有 CI 模型(GitHub Actions / Drone YAML)。
DSL 语法示例
|
|
核心语法定义(YAML Schema)
| 字段 | 类型 | 说明 |
|---|---|---|
version |
string | DSL 版本号 |
name |
string | Pipeline 名称 |
trigger |
object | 触发条件定义 |
stages |
list | 阶段集合 |
stages[].name |
string | 阶段名称 |
stages[].needs |
list | 依赖阶段 |
stages[].runs_on |
string | 指定 Runner 类型 |
stages[].approval |
string | 审批角色 |
stages[].steps |
list | 执行步骤集合 |
stages[].steps[].run |
string | Shell 命令 |
stages[].steps[].artifact |
object | 上传/下载制品操作 |
stages[].steps[].k8s.deploy |
object | Kubernetes 部署配置 |
env |
dict | 全局环境变量 |
功能特性
-
支持 并行与串行混合执行;
-
支持 条件判断(如
when: branch == 'main'); -
内置函数:
${{ git.commit }},${{ git.tag }},${{ env.VAR }};
-
审批节点:
approval字段触发人工确认; -
动态变量注入(在运行时从 Secret/环境中加载);
-
Schema 校验:在保存时进行 YAML 结构合法性检查。
验收标准
✅ Pipeline YAML 可通过编辑器直接创建与验证; ✅ 保存时自动补全默认字段; ✅ 错误结构给出详细提示(行号 + 错误原因); ✅ 支持 100+ 并发运行 YAML 实例。
4.2 Runner 架构与执行机制(Runner Architecture)
Runner 类型
| 类型 | 描述 | 适用场景 |
|---|---|---|
| Local Runner | 内置单机执行 | 本地部署、小团队 |
| Docker Runner | 每任务启动隔离容器 | CI 构建安全隔离 |
| K8s Runner | 每任务创建 Pod | 云端可扩展集群 |
| SSH Runner | 远程主机执行 | 部署生产环境 |
| Ephemeral Runner | 动态实例(云端拉起) | 弹性任务、高并发 |
Runner 生命周期
flowchart LR
A[Register Runner] --> B[Heartbeat/Health Check]
B --> C[Pull Job From Queue]
C --> D[Prepare Env & Secrets]
D --> E[Execute Steps]
E --> F[Upload Logs & Artifacts]
F --> G[Report Status]
G --> B
任务隔离
- 每个 Job 在独立命名空间执行;
- 临时文件夹
/workspace/<job_id>; - Job 结束自动清理;
- 支持资源配额限制(CPU/MEM);
- 网络访问限制(Outbound Policy)。
负载均衡策略
- 调度器根据 Runner
capacity、region、tags分配; - 健康度(HeartBeat)超时自动摘除;
- 支持优先级队列(高优先任务优先执行)。
Runner 指标采集
- CPU/Mem 使用率;
- 当前并发数;
- Job 平均执行时长;
- 成功率;
- 心跳延迟;
- 磁盘空间告警。
验收标准
- Runner 崩溃任务可重试;
- 单 Runner 可并发执行 ≥ N 个任务;
- 日志实时回传;
- Runner 故障可自动摘除;
- 5 秒内完成重分配。
4.3 蓝绿发布(Blue-Green Deployment)
概念
蓝绿发布是将新版本(Green)与旧版本(Blue)同时存在,切换流量后平滑过渡。
实现流程
- 创建新副本(Green);
- 健康检查通过;
- 切换流量至 Green;
- 清理旧版本 Blue。
支持参数
|
|
验收标准
- 流量切换可配置渐进式;
- 失败自动回退;
- 部署无停机;
- 健康验证延迟 < 5 秒。
4.4 金丝雀发布(Canary Deployment)
概念
金丝雀发布(Canary Release)用于先向部分用户/流量放量测试。
实现方式
- 流量按权重分配(如 5% → 20% → 100%);
- 自动监控错误率;
- 失败回退到上版本。
配置示例
|
|
验收标准
- 支持自定义放量曲线;
- 可接入监控指标(Prometheus Query);
- 自动中止并回滚;
- UI 可视化放量曲线。
4.5 策略引擎(Policy Engine)
设计目标
Policy Engine 让团队通过“策略即代码(Policy as Code)”定义企业级规则。
基础架构
- 基于 OPA(Open Policy Agent);
- 策略语言:Rego;
- 策略存储于 PostgreSQL;
- 每次部署前执行策略评估。
示例策略
|
|
策略分类
| 分类 | 示例 |
|---|---|
| 镜像安全策略 | 禁止未签名镜像 |
| 环境隔离策略 | 禁止 dev 配置部署至 prod |
| 资源限制策略 | 每任务最大 CPU/Mem |
| 审批策略 | prod 环境部署需 Maintainer 审批 |
| Secret 安全策略 | 禁止使用明文密码 |
审批流(Approval Flow)
审批规则可配置:
|
|
审批操作:
- 支持单人 / 多人会签;
- 超时自动拒绝;
- 可通过 Web / API 批准。
验收标准
- 所有部署前执行策略校验;
- 不符合策略拒绝执行;
- 审批日志可追溯;
- 策略执行时间 < 1 秒。
4.6 成本分析与计费模型(Cost Analysis & Billing Model)
目标
为多租户平台提供透明计费与成本控制。
核心维度
| 项目 | 计量单位 | 示例 |
|---|---|---|
| 构建时长 | 分钟(Build Minutes) | 每分钟 ¥0.01 |
| 存储占用 | GB/月 | 每 GB ¥0.1 |
| Runner 并发 | 数量 | 超出部分计费 |
| 成员数量 | 个 | Team/Enterprise 收费维度 |
成本收集
- 每个
PipelineRun记录开始/结束时间; - 按租户汇总;
- 存储按月扫描 Artifact 表;
- Runner 使用通过心跳上报。
计费接口
|
|
成本仪表盘
- 每项目/环境成本饼图;
- 趋势图(过去 30 天);
- 可设置预算上限与告警。
验收标准
- 成本数据实时更新;
- 超预算自动发邮件通知;
- 支持导出账单 CSV;
- API 查询性能 < 500ms。
4.7 多租户与配额控制(Multi-Tenant & Quota Management)
资源配额
| 类型 | 默认值 | 限制说明 |
|---|---|---|
| 构建并发 | 3 | 最大同时运行任务数 |
| 存储容量 | 20GB | 超出自动清理旧制品 |
| Runner 数量 | 2 | 可购买额外 Runner |
| 成员数 | 5 | Free 版限制 |
| 构建分钟数/月 | 1000 | 超出暂停构建 |
租户隔离
- 每个租户独立命名空间;
- Runner 标签隔离;
- Secret 与 Artifact 独立访问控制。
租户生命周期管理
- 创建组织;
- 分配初始配额;
- 定期清理过期租户;
- 提供升级通道(Pro / Team)。
验收标准
- 配额触顶时任务自动排队;
- 超限事件告警;
- 可动态调整配额;
- 数据隔离验证通过。
4.8 弹性伸缩与资源优化(Elastic Scaling)
功能目标
动态扩容 Runner 与调度资源,实现成本与性能平衡。
实现方式
-
自动伸缩(Auto Scaling)
-
根据队列长度(Job Queue Length)动态调整 Runner;
-
可配置阈值:
1 2 3 4 5autoscale: min: 2 max: 10 scale_up_threshold: 5 scale_down_threshold: 1
-
-
冷热分区(Hot/Warm Pools)
- 热池保留高频任务;
- 冷池延迟启动 Runner 节省资源。
验收标准
- 负载上升 30 秒内完成扩容;
- 无任务时自动缩容;
- 成本下降 ≥ 20%。
4.9 插件与生态扩展(Plugin & Ecosystem)
插件目录结构
plugins/
├── cache/
│ └── main.go
├── notify/
│ └── slack.go
├── deploy/
│ ├── helm.go
│ └── kubectl.go
插件声明文件(plugin.yaml)
|
|
插件市场(Plugin Hub)
- 官方维护基础插件;
- 社区贡献插件上传验证;
- 安全审查与签名;
- 插件评分与版本管理。
验收标准
- 插件加载时间 < 2s;
- 插件错误不影响主任务;
- 插件隔离运行;
- 插件签名验证通过。
4.10 策略执行链(Policy Execution Chain)
执行链顺序:
Trigger → Pipeline Parse → Pre-Build Policy → Build → Post-Build Hook
→ Pre-Deploy Policy → Approval Flow → Deploy → Post-Deploy Policy → Audit
每个阶段的 Policy 可定义为:
|
|
4.11 灰度规则与实验配置(A/B Testing & Shadow Deployment)
功能说明
- 支持镜像影子流量(Shadow Deployment);
- 用于验证新版本性能与兼容性;
- 监控对比延迟、错误率等指标。
示例
|
|
验收标准
- 不影响主流量;
- 监控数据准确;
- 实验结果可导出报表。
4.12 报表与分析(Reports & Analytics)
- 构建成功率趋势;
- 平均构建时长;
- 部署频率;
- 回滚次数;
- 成本统计;
- Runner 使用率;
- 审批响应时间;
- SLA 达标率。
验收标准
- 图表渲染延迟 < 2s;
- 数据统计周期可选;
- 支持导出 CSV / PDF;
- 可嵌入仪表板。
✅ 总结: 第四章定义了平台的高级特性,使 DeployLite 从“轻量可用”提升为“可策略化、可计费、可集成”的完整 SaaS 平台。 下一章节将进入:
第五章:非功能性需求与运维保障(性能、安全、备份、SLA、运维界面、可观测性)