CDS(Continuous Delivery Service)是由法国云服务商 OVHcloud 开源的 企业级持续交付与 DevOps 自动化平台,使用 Go 语言开发。它支持从代码构建、测试、部署到发布的完整 CI/CD 流水线,并具备高可用、多租户、工作流模板、权限控制等企业级特性。
以下是 CDS 的核心使用方法,包括安装、配置、创建项目、定义流水线(Pipeline)和工作流(Workflow),以及通过 UI 或 CLI 操作。
一、CDS 核心概念
| 概念 | 说明 |
|---|---|
| Project(项目) | 类似“租户”,包含应用、环境、流水线、工作流等资源 |
| Application(应用) | 对应一个 Git 仓库(如 GitHub/GitLab 项目) |
| Environment(环境) | 如 dev、staging、prod,每个环境有独立变量 |
| 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 repository、Run script)
- 在 Stage 中添加 Job(如
💡 支持内置 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、本地(不推荐)
官方资源
- GitHub: https://github.com/ovh/cds
- 官方文档: https://ovh.github.io/cds/
- 博客介绍: https://blog.ovhcloud.com/how-does-ovh-manage-the-ci-cd-at-scale/
- Docker 快速开始: https://ovh.github.io/cds/hosting/ready-to-run/docker-compose/
总结:CDS 适合谁?
- 需要复杂工作流(多环境、人工审批、条件分支)
- 追求配置即代码 & GitOps
- 企业级权限/审计/多租户需求
- 已有 Kubernetes/OpenStack 基础设施
如果你厌倦了 Jenkins 的 Groovy 脚本和插件冲突,CDS 是一个现代化、结构清晰的替代方案。