CDS(Continuous Delivery Service)是由法国云服务商 OVHcloud 开源的 企业级持续交付与 DevOps 自动化平台,使用 Go 语言开发。它支持从代码构建、测试、部署到发布的完整 CI/CD 流水线,并具备高可用、多租户、工作流模板、权限控制等企业级特性。

以下是 CDS 的核心使用方法,包括安装、配置、创建项目、定义流水线(Pipeline)和工作流(Workflow),以及通过 UI 或 CLI 操作。


 一、CDS 核心概念

概念 说明
Project(项目) 类似“租户”,包含应用、环境、流水线、工作流等资源
Application(应用) 对应一个 Git 仓库(如 GitHub/GitLab 项目)
Environment(环境) devstagingprod,每个环境有独立变量
Pipeline(流水线) 由多个 Stage(阶段) 组成,每个 Stage 可并行运行多个 Job(任务)
Workflow(工作流) CDS 的核心创新:可将多个 Pipeline 串联/并联,形成复杂部署流程(支持条件触发、人工审批等)
Worker Model 执行 Job 的运行环境(Docker 镜像、VM、K8s Pod 等)
Hatchery 自动扩缩容 Worker 的“孵化器”(支持 Kubernetes、OpenStack、Docker Swarm 等)

✅ 与 Jenkins 不同:CDS 强调 工作流可视化 + 配置即代码(Workflow as Code)


 二、快速启动(Docker Compose)

官方提供了一键启动脚本,适合体验或小型团队。

1. 克隆官方示例

git clone https://github.com/ovh/cds.git
cd cds/contrib/docker-compose

2. 启动服务

docker-compose up -d

默认启动以下组件:

  • cds-api(API 服务)
  • cds-db(PostgreSQL)
  • cds-cache(Redis)
  • cds-ui(前端)
  • cds-hatchery-local(本地 Worker 孵化器)

3. 访问 Web UI

打开浏览器访问:

http://localhost:2015
  • 初始管理员账号:admin / 密码:mysecretpassword(可在 docker-compose.yml 中修改)

 三、基本使用流程

步骤 1:创建 Project(项目)

  • 登录 UI → 点击 + New Project
  • 填写名称(如 my-app

步骤 2:创建 Application(应用)

  • 进入项目 → Applications → + New Application
  • 关联 Git 仓库(GitHub/GitLab/Bitbucket 等)
  • CDS 会自动创建 Webhook,实现 git push 触发构建

步骤 3:创建 Pipeline(流水线)

  • 进入 Pipelines → + New Pipeline
  • 添加 Stage(如 Build
    • 在 Stage 中添加 Job(如 Compile
    • 在 Job 中添加 Actions(如 Checkout repositoryRun script

💡 支持内置 Action(Script、Artifact Upload、Docker Build 等),也支持自定义插件

步骤 4:创建工作流(Workflow)

  • 进入 Workflows → + New Workflow
  • 将刚创建的 Pipeline 拖入画布
  • 可添加:
    • 触发条件(如仅 main 分支触发)
    • 人工审批节点(Approve for Prod)
    • 并行部署多个环境

✅ 示例:
Git Push → Build (dev) → Test → [Manual Approval] → Deploy (prod)

步骤 5:运行 & 监控

  • 点击 Run 手动触发,或等待 Git 推送自动触发
  • 实时查看日志、Artifacts、状态

 四、命令行工具 cdsctl

CDS 提供强大的 CLI 工具 cdsctl,支持 100% 功能覆盖

1. 安装

Releases 下载对应 OS 的二进制文件。

2. 登录

cdsctl login http://localhost:2015 --username admin --password mysecretpassword

3. 常用命令

# 查看项目
cdsctl project list

# 导出工作流为 YAML(Workflow as Code)
cdsctl workflow export my-project my-workflow > workflow.yml

# 从 YAML 创建工作流
cdsctl workflow import my-project workflow.yml

# 跟踪运行中的工作流
cdsctl workflow run show my-project my-workflow --run 123 --track

✅ 推荐将 workflow.yml 提交到 Git,实现 版本化 CI/CD 配置


 五、Workflow as Code(配置即代码)

在项目根目录创建 .cds/ 文件夹,存放 YAML 配置:

my-repo/
├── .cds/
│   ├── pipeline.build.yml
│   ├── pipeline.deploy.yml
│   └── workflow.main.yml

示例 workflow.main.yml

version: v1.0
name: main
project: my-project
root:
  name: build-and-deploy
  pipeline: build
  triggers:
    - name: deploy-to-staging
      pipeline: deploy
      conditions:
        - variable: git.branch == "develop"

修改后 git push,CDS 会自动同步配置!


 六、生产部署建议

组件 推荐方案
数据库 PostgreSQL(外部高可用集群)
缓存 Redis Cluster
Worker 扩容 Hatchery on Kubernetes(自动伸缩 Pod)
高可用 多实例 cds-api + 负载均衡
安全 启用 LDAP/OAuth2、RBAC 权限控制、审计日志

OVH 内部使用 CDS 每年运行 700 万+ Worker 任务,证明其生产可靠性。


 七、集成能力

  • Git 平台:GitHub、GitLab、Bitbucket Server、Gerrit
  • 部署目标:Kubernetes、OpenStack、AWS、自定义 Shell
  • 通知:Slack、邮件、Webhook、Kafka/RabbitMQ(事件总线)
  • 制品存储:Swift、S3、本地(不推荐)

 官方资源


 总结:CDS 适合谁?

  • 需要复杂工作流(多环境、人工审批、条件分支)
  • 追求配置即代码 & GitOps
  • 企业级权限/审计/多租户需求
  • 已有 Kubernetes/OpenStack 基础设施

如果你厌倦了 Jenkins 的 Groovy 脚本和插件冲突,CDS 是一个现代化、结构清晰的替代方案。

© 本文著作权归作者所有。转载请联系授权,禁止商用。