云原生开发
基于云原生构建的远程开发解决方案,支持 WebIDE、VSCode 客户端、Cursor 客户端进行远程开发。
# 设计原则
声明式
:基于 Docker 生态,Dockerfile 声明开发环境,与代码同源管理快速启动
:即使是超大仓库,也可以数秒准备好代码和环境按需使用
:按需获取开发资源,闲时快速回收,避免资源浪费
# 一键创建开发环境
可在仓库分支页面,点击右上角 云原生开发
按钮,一键创建开发环境,
无需任何配置,即可直接打开一个默认的开发环境,
默认会使用 cnbcool/default-dev-env:latest
作为开发环境基础镜像。
# 自定义开发环境
如果希望点击分支页面 云原生开发
能启动一个自定义的开发环境,
可在仓库根目录下增加 .ide/Dockerfile
文件,在 Dockerfile 中自由定制开发环境,
启动开发环境时会优先使用 .ide/Dockerfile
构建一个镜像,作为开发环境基础镜像。
# .ide/Dockerfile
FROM node:20
# 以及按需安装其他软件
# RUN apt-get update && apt-get install -y git
# 安装 code-server 和 vscode 常用插件
RUN curl -fsSL https://code-server.dev/install.sh | sh \
&& code-server --install-extension redhat.vscode-yaml \
&& code-server --install-extension dbaeumer.vscode-eslint \
&& code-server --install-extension waderyan.gitblame \
&& code-server --install-extension mhutchie.git-graph \
&& code-server --install-extension donjayamanne.githistory \
&& code-server --install-extension tencent-cloud.coding-copilot \
&& echo done
# 安装 ssh 服务,用于支持 VSCode 客户端通过 Remote-SSH 访问开发环境
RUN apt-get update && apt-get install -y wget unzip openssh-server
# 指定字符集支持命令行输入中文(根据需要选择字符集)
ENV LANG C.UTF-8
ENV LANGUAGE C.UTF-8
# 自定义创建流程
如果希望点击分支页面 云原生开发
能使用自定义的 Yaml
流水线配置,
可在仓库根目录下新增 .cnb.yml
文件, 文件内新增如下配置:
# .cnb.yml
$:
# vscode 事件:专供页面中启动远程开发用
vscode:
- docker:
# 自定义镜像作为开发环境
image: node:20
services:
- vscode
- docker
stages:
- name: ls
script: ls -al
# 自定义资源规格
可以通过 runner.cpus
声明需要的开发资源,最大支持 64核
,内存为 cpus x 2(GB)。
# .cnb.yml
$:
vscode:
- runner:
cpus: 64
docker:
build: .ide/Dockerfile
services:
- vscode
- docker
stages:
- name: ls
script: ls -al
# 自定义启动事件
通过 .cnb.yml
,声明指定事件触发时自动创建开发环境。触发事件推荐使用:
vscode
:仓库页面点击启动云原生开发
按钮时创建开发环境branch.create
:创建分支时创建开发环境api_trigger
:自定义事件触发创建开发环境web_trigger
:web 页面自定义事件触发创建开发环境
# .cnb.yml
# 匹配所有分支
(**):
# 创建分支时创建开发环境
branch.create:
- name: vscode
services:
# 声明使用 vscode 服务
- vscode
docker:
# 自定义开发环境
build: .ide/Dockerfile
stages:
- name: 执行自定义脚本
script:
- npm install
- npm run start
# 自定义可用时机
云原生开发可用时机默认为:流水线准备(prepare
)阶段执行完(code-server
代码服务在准备阶段启动),stages
任务执行前。
如果希望执行某些任务后再进入开发环境,即延迟进入开发环境时机,可使用 vscode:go 内置任务。
使用该任务,启动云原生开发后,loading
页将延迟进入云原生开发入口选择页。当 vscode:go
任务执行后才能进入入口选择页。
注意,使用 vscode:go
任务将增加等待时间。
可将必须在进入开发环境前执行的任务放在 vscode:go
前执行,
在进入开发环境后执行的任务放在 vscode:go
后。
如果没有必须在进入开发环境前执行的任务,就无需使用 vscode:go
。
当 stages
任务执行失败,远程开发是否结束:
- 使用
vscode:go
:vscode:go
前的任务执行失败,开发环境将销毁 - 使用
vscode:go
:vscode:go
后的任务执行失败,开发环境不会销毁 - 未使用
vscode:go
:stages
任务执行失败,开发环境不会销毁
# 自定义环境销毁前任务
可使用 endStages
定义开发环境销毁前需要执行的任务.
# .cnb.yml
$:
vscode:
- docker:
image: node:20
services:
- vscode
- docker
# 开发环境启动后会执行的任务
stages:
- name: ls
script: ls -al
# 开发环境销毁前会执行该任务
endStages:
- name: end stage 1
script: echo "end stage 1"
- name: end stage 2
script: echo "end stage 2"
# 自定义云原生开发启动按钮
可根据需要配置云原生开发启动按钮,如:按钮名称、按钮描述、按钮是否禁用、启动 cpu 核数。
在仓库中新增 .cnb/settings.yml
文件:
# .cnb/settings.yml
workspace:
# 定制分支页面/仓库首页云原生开发启动按钮
launch:
# 以下参数均非必填
button:
# 按钮名称,默认为:云原生开发
name: 云原生启动
description: 启动远程开发,快速体验云端环境
# CPU 核心数,默认为:8。仅对默认模版有效,如果有自定义云原生开发启动流水线,则此配置无效
cpus: 8
# 是否禁用该按钮,默认为:false 表示不禁用。true 表示禁用
disabled: false
# 点击云原生开发按钮后,环境创建完自动打开 WebIDE(无论是否支持客户端连接远程开发),默认为 false
# 当开发环境中未安装 openssh(仅支持 WebIDE):无论此参数配置为 true 还是 false,环境创建完都将自动打开 WebIDE
autoOpenWebIDE: true
注意:当文件解析失败或大小超过限制,将不会使用该配置
使用技巧 →