「DeployLite」第十章:附录

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

第十章:附录(Appendices)

10.1 缩略语表(Glossary of Terms)

缩写全称中文说明
APIApplication Programming Interface应用程序接口
CIContinuous Integration持续集成
CDContinuous Deployment持续部署
DSLDomain-Specific Language领域专用语言
YAMLYAML Ain’t Markup Language配置文件格式
RBACRole-Based Access Control基于角色的访问控制
OPAOpen Policy Agent策略引擎
SBOMSoftware Bill of Materials软件物料清单
SLAService Level Agreement服务等级协议
RTORecovery Time Objective恢复时间目标
RPORecovery Point Objective数据恢复点目标
JWTJSON Web Token用户身份认证令牌
SDKSoftware Development Kit软件开发工具包
S3Simple Storage Service对象存储服务协议
GAGeneral Availability正式可用版本
MVPMinimum Viable Product最小可行产品
KPIKey Performance Indicator关键绩效指标
DAGDirected Acyclic Graph有向无环图
WASMWebAssembly浏览器可执行二进制格式
CLICommand Line Interface命令行接口
ORMObject-Relational Mapping对象关系映射
E2EEnd-to-End端到端测试
CDNContent Delivery Network内容分发网络
KMSKey Management Service密钥管理系统

10.2 YAML Pipeline 示例(Pipeline DSL Reference)

version: 1
name: Full Build & Deploy

trigger:
  on:
    push: ["main"]
    tag: ["v*"]

env:
  BUILD_MODE: release
  REGISTRY: registry.example.com

stages:
  - name: build
    runs_on: docker-runner
    steps:
      - checkout
      - run: go build -o bin/app ./cmd
      - cache:
          path: ~/.cache/go-build
      - artifact: upload
        path: bin/app
        name: binary

  - name: test
    needs: [build]
    steps:
      - run: go test ./... -v

  - name: package
    needs: [test]
    steps:
      - run: docker build -t ${{ env.REGISTRY }}/app:${{ git.tag }} .
      - run: docker push ${{ env.REGISTRY }}/app:${{ git.tag }}

  - name: deploy
    approval: maintainers
    needs: [package]
    steps:
      - k8s.deploy:
          file: k8s/deployment.yaml
          image: ${{ env.REGISTRY }}/app:${{ git.tag }}
          namespace: prod

支持的关键字

关键字类型说明
triggerobject触发条件(push, tag)
envmap全局环境变量
stagesarray阶段列表
runs_onstringRunner 类型
stepsarray任务步骤
cacheobject缓存目录
artifactobject制品上传下载
approvalstring审批角色
needsarray依赖阶段
k8s.deployobjectK8s 部署指令

10.3 API Schema(OpenAPI Snippet)

openapi: 3.1.0
info:
  title: DeployLite API
  version: 1.0.0
paths:
  /projects:
    get:
      summary: 获取项目列表
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                  items:
                    type: array
                    items:
                      $ref: "#/components/schemas/Project"
  /pipelines/{id}/run:
    post:
      summary: 触发流水线运行
      parameters:
        - name: id
          in: path
          required: true
          schema: { type: integer }
      responses:
        "201":
          description: Created
components:
  schemas:
    Project:
      type: object
      properties:
        id: { type: integer }
        name: { type: string }
        repo_url: { type: string }
        created_at: { type: string, format: date-time }

10.4 数据库表结构定义(Database Schema)

表 1:projects

CREATE TABLE projects (
  id SERIAL PRIMARY KEY,
  name VARCHAR(128) NOT NULL,
  repo_url TEXT NOT NULL,
  description TEXT,
  owner_id BIGINT NOT NULL,
  created_at TIMESTAMP DEFAULT NOW(),
  updated_at TIMESTAMP DEFAULT NOW()
);

表 2:pipelines

CREATE TABLE pipelines (
  id SERIAL PRIMARY KEY,
  project_id BIGINT REFERENCES projects(id),
  yaml TEXT NOT NULL,
  status VARCHAR(20) DEFAULT 'pending',
  started_at TIMESTAMP,
  finished_at TIMESTAMP,
  created_by BIGINT,
  logs_url TEXT
);

表 3:runners

CREATE TABLE runners (
  id SERIAL PRIMARY KEY,
  name VARCHAR(128),
  token TEXT,
  status VARCHAR(20) DEFAULT 'offline',
  last_heartbeat TIMESTAMP,
  capacity INT DEFAULT 1,
  region VARCHAR(64)
);

表 4:artifacts

CREATE TABLE artifacts (
  id SERIAL PRIMARY KEY,
  project_id BIGINT REFERENCES projects(id),
  name VARCHAR(128),
  version VARCHAR(64),
  storage_path TEXT,
  hash CHAR(64),
  size BIGINT,
  created_at TIMESTAMP DEFAULT NOW()
);

表 5:policies

CREATE TABLE policies (
  id SERIAL PRIMARY KEY,
  name VARCHAR(128),
  type VARCHAR(32),
  content TEXT,
  enabled BOOLEAN DEFAULT TRUE,
  created_at TIMESTAMP DEFAULT NOW()
);

表 6:audit_logs

CREATE TABLE audit_logs (
  id BIGSERIAL PRIMARY KEY,
  actor_id BIGINT,
  action VARCHAR(128),
  resource_type VARCHAR(64),
  resource_id BIGINT,
  status VARCHAR(32),
  timestamp TIMESTAMP DEFAULT NOW(),
  trace_id UUID
);

10.5 配置文件示例(Configuration Reference)

server:
  host: 0.0.0.0
  port: 8080
  log_level: info
  enable_tls: true

database:
  driver: postgres
  dsn: postgres://user:pass@db:5432/deploylite?sslmode=disable

redis:
  addr: redis:6379
  db: 0

storage:
  provider: s3
  endpoint: http://minio:9000
  access_key: minio
  secret_key: minio123
  bucket: deploylite-artifacts

security:
  jwt_secret: "changeme"
  admin_user: "admin"
  admin_password: "admin123"

runner:
  concurrency: 5
  labels: ["docker", "x86_64"]

metrics:
  enable: true
  endpoint: /metrics

10.6 CLI 命令参考(DeployLite CLI)

命令说明
dlctl init初始化配置
dlctl run手动触发构建
dlctl runner register注册 Runner
dlctl pipeline list查看流水线
dlctl artifact ls查看制品
dlctl artifact download <id>下载文件
dlctl policy reload热加载策略
dlctl status查看系统状态

10.7 角色与权限表(RBAC Definition)

角色权限
Owner全权限、成员管理、策略修改
Maintainer部署、审批、配置环境
Developer构建、查看日志、上传制品
Viewer只读访问
Auditor审计日志查看权限

10.8 日志格式规范(Logging Format Specification)

{
  "time": "2025-10-22T14:02:11Z",
  "level": "info",
  "module": "pipeline",
  "trace_id": "a7c3e8c2",
  "pipeline_id": 4021,
  "message": "stage build completed in 42.3s",
  "fields": {
    "runner": "runner-01",
    "status": "success"
  }
}

日志级别定义

级别用途
TRACE详细调试信息
DEBUG调试
INFO常规运行信息
WARN可恢复异常
ERROR错误事件
FATAL程序终止

10.9 部署模板示例(Deployment Template)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-deploylite
spec:
  replicas: 3
  selector:
    matchLabels:
      app: app-deploylite
  template:
    metadata:
      labels:
        app: app-deploylite
    spec:
      containers:
        - name: app
          image: registry.example.com/app:v1.0.0
          ports:
            - containerPort: 8080
          envFrom:
            - configMapRef:
                name: app-config

10.10 Plugin Manifest 参考(Plugin Manifest)

name: notify-slack
version: 1.0.0
type: notify
entrypoint: "plugins/notify/slack/main.go"
inputs:
  - name: webhook
    type: string
  - name: message
    type: string
outputs:
  - name: status
    type: string

10.11 License(开源协议)

AGPL-3.0 License

Copyright (C) 2025 DeployLite

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License, version 3.
You must make the source code available to users who interact with it
over a network.

For commercial usage (SaaS or OEM), please contact: legal@deploylite.io

10.12 文档维护策略(Documentation Maintenance Plan)

  1. 版本控制: 所有 PRD 与文档存储在 Git 仓库 /docs/;
  2. 变更日志: 每次发布更新 /CHANGELOG.md;
  3. 自动生成: API 文档、CLI 文档通过 Swagger 与 Cobra 自动生成;
  4. 社区同步: 官方文档站(docs.deploylite.io)每日构建;
  5. 国际化: 提供中文 + 英文双语版本;
  6. 存档策略: 每季度打包归档 PDF + Markdown;
  7. 版本命名: 文档与代码版本同步(v1.0, v2.0, …)。

10.13 版本记录(Version History)

版本日期内容
0.1.02025-01MVP 架构与 CLI 原型
1.0.02025-05Beta 发布,支持多 Runner
2.0.02025-10SaaS 多租户版发布
3.0.02026-05智能部署 + 插件生态版
3.1.02026-12企业旗舰版,全面监控
4.0.02027-06自动化 AI 运维版

第十章总结:
本附录章节为整个产品提供了实施层的可操作依据与技术元数据定义。
包括:

  • Schema、配置、模板、日志规范;
  • 完整的 API / 数据结构;
  • 法律与开源声明;
  • 可追踪文档体系。

DeployLite 至此形成了一个完整的 从理念 → 架构 → 产品 → 工程 → 运营 → 生态 的闭环体系。

10.14 安全合规体系

DeployLite 面向多租户和企业客户,安全合规是商业化的前提。

合规标准实施要点验证方式
SOC 2 Type II访问控制、变更审计、数据加密第三方审计
GDPR / 个保法数据最小化、可删除权、跨境传输隐私影响评估
等保三级身份鉴别、安全审计、数据完整性测评机构认证
SBOM依赖图谱、漏洞扫描、许可证合规自动化 CI 生成

关键安全措施包括:Pipeline 执行沙箱化(gVisor/Kata Containers)、Secret 加密存储(Vault / SOPS)、RBAC 最小权限、以及 OPA 策略即代码。

10.15 灾难恢复与业务连续性

指标目标值实现手段
RTO(恢复时间目标)< 30 分钟多可用区部署 + 自动故障转移
RPO(恢复点目标)< 5 分钟实时 WAL 流复制 + 增量快照

恢复流程:

  1. 监控告警触发 → 2. 自动化切换到异地副本 → 3. 人工确认数据一致性 → 4. 通知受影响客户 → 5. 事后复盘与根因修复

数据库采用 pg_basebackup + WAL-G 实现 PITR(Point-in-Time Recovery),制品存储跨区域冗余(S3 Cross-Region Replication)。

10.16 多租户隔离方案

隔离维度SaaS 版策略自托管版策略
数据层行级租户 ID + 数据库级加密独立数据库实例
网络层Namespace 隔离 + NetworkPolicy独立 K8s 集群
计算层Runner 标签分组 + 资源配额独占 Runner 集群
策略层OPA Gatekeeper 租户策略自建 OPA 实例

建议 SaaS 版默认采用”软多租户”(共享基础设施 + 逻辑隔离),大型客户可升级至”硬多租户”(独立资源池)。

10.17 CI/CD 安全扫描集成

在 Pipeline 中内嵌安全门禁:

stages:
  - name: security-scan
    steps:
      - run: semgrep --config=auto .
      - run: trivy image ${{ env.REGISTRY }}/app:${{ git.tag }}
      - run: syft packages dir:. -o spdx-json > sbom.spdx.json
      - run: grype sbom.spdx.json --fail-on critical

扫描工具矩阵:

类型工具阶段
SASTSemgrep / CodeQL代码提交
SCAOWASP Dependency-Check构建
秘钥扫描TruffleHog / GitLeaks代码提交
容器扫描Trivy / Grype镜像打包
SBOM 生成Syft发布

高危漏洞未修复前,Pipeline 自动阻断发布,确保漏洞不入生产环境。

最终总结

DeployLite 的核心使命:
”让任何开发者都能一键完成从代码到上线的最后一公里。”

它是一套融合 轻量化、可扩展、安全可控、智能可演进 的现代化 CI/CD 平台,
未来可衍生成:

  • 开源自托管版(DevOps 自用);
  • SaaS 商业版(企业级多租户 CI/CD);
  • AI 增强版(智能构建 + 异常预测 + 自动恢复)。

继续阅读

探索更多技术文章

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

全部文章 返回首页

「prd」更多文章

  1. Kite 关闭案例:AI 编程助手为什么早起飞却没飞远
  2. Powa Technologies 失败案例:宏大支付愿景为什么没有落地
  3. BlueJeans 受挫案例:视频会议早入场,为什么没赢到最后