「DeployLite」功能与特性清单

DeployLite 是一个轻量级、自托管的持续集成与部署平台(CI/CD Platform),专为中小团队与独立开发者设计,帮助他们以最小的成本实现从代码提交到上线的完整生命周期。

下面是一份「轻量级打包与部署平台」的功能与特性清单,按从MVP → v1 → v2逐步演进来组织。
内容覆盖:核心场景、功能模块、架构与交互、非功能性指标、安全合规、可运营特性、以及示例清单与配置片段。

目标与定位

  • 定位:面向个人开发者与小团队的一站式“从代码到上线”的打包、制品管理与部署平台(自托管/云)。
  • 核心目标:极简上手、默认安全、低成本、开箱即用,支持容器与非容器二进制部署。
  • 关键指标:10分钟完成首个项目上线;单项目平均构建时长 < 3 分钟;回滚 < 30 秒;月度可用性 ≥ 99.9%。

核心使用者画像

  • Indie 开发者 / 小型创业团队:追求低学习成本,能快速把服务跑起来。
  • 业务工程师:需要稳定的部署流水线、灰度/回滚能力与可观测性。
  • 运维/平台工程师:希望“少即是多”,可按需扩展 runner 与环境。

一、MVP(最小可用集)

目标:一键连接仓库 → 自动打包 → 产出制品 → 部署到目标环境 → 失败可回滚

1. 项目与源码接入

  • GitHub/GitLab/Gitee OAuth 绑定,支持仓库选择、私有仓库。
  • 触发方式:手动、Push/Tag、PR 合并、定时(cron)。
  • 分支/标签过滤(如 main, release/*, v*.*.*)。

2. 构建与打包

  • 语言支持:Go、Node.js、Python、Java等。
  • 构建缓存:模块缓存与依赖缓存(Go mod、npm/pip/maven)。
  • 制品类型:Docker 镜像、Linux/Windows/macOS 二进制、Zip/Tar 包。
  • 版本策略:SemVer 推导(基于标签),默认 git commit 短 SHA 添加后缀。
  • 基础 SBOM(软件成分清单)生成(如 Syft)。

3. 制品库(Artifacts)

  • 内置简易制品存储(本地/对象存储 S3 兼容)。
  • 保留策略:按版本/时间/下载次数自动清理。
  • 下载权限控制与短链分享。

4. 部署目标

  • Kubernetes(通过 Kubeconfig/ClusterRole):Deployment/Service/Ingress。
  • Linux 主机(SSH):上传二进制/包,执行 pre/post 钩子。
  • Docker 主机:拉取镜像,重启容器(compose/原生 docker)。
  • 环境模板:dev / staging / prod(变量、密钥隔离)。

5. 配置与密钥

  • 项目级环境变量/密钥管理(KV + Secret,支持覆盖层级)。
  • 模板化配置渲染(envsubst/简单变量替换)。

6. 部署策略与回滚

  • 滚动更新(K8s 原生滚动/容器重启)。
  • 一键回滚至上一版本(保留 N 个已知良好版本)。
  • 健康检查(HTTP/Command)与超时回退。

7. 可观测性与记录

  • 构建/部署日志(流式 + 存档)。
  • 事件审计(谁在何时做了什么,项目级审计流)。
  • 基本告警:失败通知(Email/Webhook)。

二、v1(扩展与稳定期)

目标:覆盖更多场景、提升平台工程能力与安全性

1. 流水线与工作流

  • YAML 工作流定义(pipeline.yaml):

    • Stages:build → test → package → release → deploy。
    • 并行/串行、条件(仅标签/分支)、手动审批 gate。
  • 共享 Job 模板(如“构建 Go 服务”、“前端构建 + 静态资源上传”)。

  • 产物在流水线阶段间传递(artifact passing)。

示例(简化版)

version: 1
triggers:
  on:
    push: [ "main" ]
    tag:  [ "v*" ]
stages:
  - name: build
    runs_on: "runner-small"
    steps:
      - checkout
      - run: go build -o bin/app ./cmd/app
      - artifact: upload
        path: bin/app
  - name: package
    needs: [ build ]
    steps:
      - artifact: download
        name: bin/app
      - run: docker build -t registry.local/app:${{ git.tag || git.sha }} .
      - run: docker push registry.local/app:${{ git.tag || git.sha }}
  - name: deploy
    when: "branch == 'main'"
    approval: "maintainers"
    steps:
      - k8s.deploy:
          file: k8s/deploy.yaml
          image_tag: "${{ git.tag || git.sha }}"

2. Runner/Agent

  • 轻量 Runner(单二进制),支持:

    • 容器执行(Docker/K8s Pod)、沙箱权限。
    • 自动注册与心跳、并发配额、队列。
  • 弹性扩容:K8s HPA/节点自动伸缩(可选)。

3. 更丰富的部署策略

  • 蓝绿发布(Blue/Green):流量切换,健康验证后再清理旧环境。
  • 金丝雀(Canary):按比例/权重灰度,失败自动回退。
  • 数据库变更管理:迁移前/后钩子与“只读检查”提示。

4. 配置与密钥进阶

  • Secret 后端可选:K8s Secrets、HashiCorp Vault、AWS Secrets Manager。
  • 配置分层与继承:全局 → 组织 → 项目 → 环境 → 任务。

5. 安全与供应链

  • 镜像签名(cosign)与验签 Gate。
  • 漏洞扫描(Trivy)与阈值策略阻断。
  • SBOM 导出 + 发布页展示。
  • 权限模型:组织/项目/环境级 RBAC(Owner/Maintainer/Developer/Viewer)。

6. 可观测与诊断

  • 内置指标(Prometheus Exporter):构建时长分布、成功率、队列时间。
  • 分布式追踪(可选接 Jaeger/Tempo)。
  • Web 终端查看容器/主机最近日志(只读)。

7. 生态与集成

  • Webhook/通知:Slack/Feishu/Teams/钉钉。
  • Issue/PR 链接(GitHub/GitLab),把部署信息回写到 PR。
  • Registry 集成:Docker Hub/GHCR/Harbor;对象存储:S3/MinIO。

三、v2(平台化与策略化)

目标:多租户、策略编排、合规与运营能力

1. 多租户与计费

  • 组织/空间隔离,配额(Runner 数、并发任务、存储上限)。
  • 计费维度:构建分钟数、制品存储量、团队成员数。
  • 计划套餐:Free / Pro / Team / Enterprise。

2. 策略与合规

  • Policy as Code(OPA/Rego):禁止 latest 镜像、必须签名等。
  • 审批流编排:按环境/风险级别设置多级审批人。
  • 合规导出:变更记录、发布单、审计报表(CSV/PDF)。

3. 更多运行时与目标

  • Serverless:AWS Lambda / Cloud Run / Fly.io(提供打包适配器)。
  • 边缘与静态站点:静态资源分发(CDN 自动刷新)。
  • Nomad/Swarm 支持(可选插件)。

4. 高级发布与回滚

  • 自动化回滚策略:基于探针失败率、SLO 触发(错误率/延迟)。
  • 影子发布(Shadow):镜像真实流量但不对外可见,用于对比。

5. 成本与性能

  • 构建缓存分布式共享(基于对象存储层或本地盘 overlay)。
  • 任务调度优化:就近镜像缓存、亲和/反亲和规则。
  • 成本看板:构建分钟/存储/流量按项目与环境维度细分。

四、界面与交互(必备页面)

  • Dashboard:最近构建/部署、失败率、平均时长、待审批。
  • Projects:项目列表、状态、触发开关。
  • Pipelines:每次流水线详情、日志、重试/跳过、生成的制品。
  • Artifacts:版本列表、SBOM/签名、下载与保留策略。
  • Environments:dev/staging/prod 概览、变量/密钥、部署历史、回滚按钮。
  • Runners:在线/离线、并发数、队列长度、资源占用。
  • Settings:组织/成员/RBAC、通知渠道、Registry、Secret 后端。
  • Reports:审计、合规导出、计费与配额。

五、非功能性需求(NFR)

  • 可用性:控制面 ≥ 99.9%;部署执行端故障时不影响已运行服务。
  • 性能:冷启动构建 ≤ 5 分钟(含依赖下载);缓存命中后 ≤ 2 分钟。
  • 扩展性:水平扩展 Runner;控制面可多副本。
  • 安全:最小权限原则、静态/传输加密(TLS)、密钥不落盘(可选内存钱包)。
  • 备份与恢复:元数据每日快照;制品多副本/跨区域(可选)。
  • 合规:基础供应链(签名、SBOM、扫描);审计日志 180 天可查。

六、可运营与增长

  • 极速上手:引导向导、模板市场(10+ 官方模板)。

  • 内置示例:Go Web/Node API/静态站点/K8s 部署示例仓库一键导入。

  • 埋点与 KPI

    • TTFD(Time To First Deploy)
    • 构建成功率、平均时长
    • 回滚次数/MTTR
    • 活跃项目数、日活 Runner、模板使用量
  • 降本策略:夜间 runner 缩容、按需拉起;制品生命周期策略。

七、与同类差异化(轻量化优势)

  • 安装即用:单二进制控制面 + 轻量 Runner;支持 docker-compose 一把梭。
  • 兼容容器与非容器发布;SSH 主机零代理部署(可选 agent)。
  • 默认内置供应链最小闭环(SBOM+扫描+签名),无需额外搭建。
  • 强调“可读可改”的 YAML 工作流与人性化 UI 共存。

八、插件/扩展点(建议)

  • Runner 执行器exec.docker / exec.k8s / exec.ssh
  • 步骤 Step 插件codecovcacheartifactnotifyhelmkubectlterraform
  • 策略 Hook:pre-build、pre-deploy、post-deploy;可注册 OPA 校验。
  • 事件总线:构建开始/结束、部署开始/成功/失败 → Webhook。

九、数据模型(核心对象)

  • OrganizationProjectEnvironmentPipelineRunJobRunArtifactReleaseDeploymentRunnerSecretPolicyAuditLog
  • 关键关系:Project-Environment(1:N)、PipelineRun-JobRun(1:N)、Release-Deployment(1:N)。

十、示例:K8s 部署模板(变量化)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-${ENV}
spec:
  replicas: ${REPLICAS}
  selector:
    matchLabels: { app: app }
  template:
    metadata:
      labels: { app: app }
    spec:
      containers:
        - name: app
          image: ${IMAGE}:${TAG}
          ports: [ { containerPort: 8080 } ]
          env:
            - name: LOG_LEVEL
              value: ${LOG_LEVEL:-info}
          readinessProbe:
            httpGet: { path: /healthz, port: 8080 }
            initialDelaySeconds: 5
            periodSeconds: 5

十一、MVP 范围边界(Out of Scope)

  • 复杂多云成本优化(初期不做),多区域主动容灾(先提供备份)。
  • 企业级单点登录(SAML/SCIM)可延后到 v2。
  • 高级 A/B 实验平台、流量编排(先支持金丝雀/蓝绿)。

十二、实施路线图(建议)

  • S0(2–4 周):仓库连接、基础构建缓存、Docker/K8s/SSH 部署、回滚、日志。
  • S1(4–6 周):YAML 工作流、Runner 池、制品库、密钥管理、通知与审计。
  • S2(6–8 周):蓝绿/金丝雀、漏洞扫描+SBOM+签名、RBAC、报表。
  • S3(8–12 周):多租户、计费、Policy as Code、Serverless/静态站点、成本看板。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页