547 字约 2 分钟
云原生构建基于 Docker 生态,对环境、缓存和插件进行了抽象, 通过声明式语法让开发者高效构建软件。
- 声明式:可编程、易分享的配置语法
- 易管理:与代码同源管理,版本可追溯
- 云原生:资源池化,降低基础设施运维成本
构建环境与缓存
声明式配置中,通过 docker.image 指定构建环境,通过 volumes 声明缓存目录:
.cnb.yml
main:
push:
- docker:
image: node:20
volumes:
- /root/.npm:copy-on-write
stages:
- node -v
- npm install
- npm testDocker 作为任务运行环境
每个任务(stage)可使用不同的镜像运行,适合需要多语言或多版本环境的场景:
.cnb.yml
main:
push:
- stages:
- name: run with node 20
image: node:20
script: node -v
- name: run with node 21
image: node:21
script: node -v基于 Docker 生态的插件
通过社区或官方插件扩展构建能力:
.cnb.yml
main:
push:
- stages:
- name: hello world
image: cnbcool/hello-world按需获取计算资源
通过 runner.cpus 申请更高规格的计算资源,最高 64 核:
.cnb.yml
main:
push:
- runner:
cpus: 64
docker:
image: node:20
volumes:
- /root/.npm:copy-on-write
stages:
- node -v
- npm install
- npm test云原生开发
远程开发环境同样使用 .cnb.yml 声明:
.cnb.yml
$:
vscode:
- runner:
cpus: 64
services:
- vscode
docker:
image: node:20
volumes:
- node_modules:copy-on-write
stages:
- npm install高性能
CPU 弹性伸缩
通过 runner.cpus 可按需申请 CPU 资源,最高 64 核。
秒级克隆
基于 OverlayFS 的 git-clone-yyds 可在数秒内完成代码准备,轻松支持 100GB+ 大仓库。
跨节点缓存
当需要跨节点共享缓存时,可使用 docker:cache 内置任务将缓存构建为 Docker 镜像:
.cnb.yml
main:
push:
- stages:
- name: build cache
type: docker:cache
options:
targets:
- name: npm_cache
image: ${CNB_DOCKER_REGISTRY}/${CNB_REPO_SLUG_LOWERCASE}/npm-cache
dockerfile: Dockerfile.cache缓存并发
copy-on-write 可实现缓存的写时复制,并发场景下无需担心缓存读写冲突。