wiki.eryajf.net2025-04-02 03:16

用上赛博菩萨CNB,咱直接起飞 | 二丫讲梵

文章摘要

这篇文章介绍了作者近期体验并强烈推荐的云原生代码托管平台CNB。CNB不仅提供类似GitHub和Gitee的代码仓库功能,还具备Github Action的流水线构建能力,以及支持VSCode远程连接的WebIDE环境。 作者通过分享自己实践的案例,展示了如何利用CNB进行镜像封装、自动构建并上传至制品库,从而打造个性化的开发环境。CNB强大的定制化和便捷性让作者体验到“起飞”般的开发效率提升,强调其在云原生环境下为开发者提供了灵活高效的解决方案。

今天来分享一个近期带给我许多惊喜体验的网站,CNB (opens new window),第一次听说这个网站,是半年前经由运维小弟 (opens new window)介绍,注册了账号,当时没有过多体验,放到了一边。年后凭借 Deepseek 的东风,CNB 群里有不少折腾大模型的讨论,我开始重新关注起这个网站。

什么是 CNB,CNB 是 Cloud Native Build 的简称,同时也是超牛逼的简称。首先它是一个代码托管仓库,你可以类比 GitHub,以及 Gitee,其次,他还支持流水线构建的能力,可以类比 Github Action,最后,他也支持 WebIDE 的能力,并且原生支持 vscode 基于 remote-ssh 连接使用。

接下来我用两个自己最近实践的案例场景,来介绍下他的用法。

# 构建

在整个 CNB 系统中,构建以及云开发都是基于云原生环境构筑的,因此镜像成为这些操作的底层环境支撑,默认情况下,官方会以 cnbcool/default-dev-env:latest 作为基础镜像,但这个镜像只做了基础的封装,我们可以自己封装一些镜像,来作为开发与构建的基础环境。

仓库地址: https://cnb.cool/znb/images (opens new window)

我创建了一个专门存放封装的镜像的仓库,借助 cnb 的构建能力,自动构建镜像,并将镜像上传到 cnb 的制品库。

现已集成如下基础环境:

更多构建方面的语法,详见:官方文档 (opens new window),你可以根据自己的需求定制自己的镜像。

# 起飞

# 基础玩法

CNB 支持自定义云开发拉起的镜像,又支持 remote-ssh,继承了在线开发,端口映射的优点,因此,我们可以基于自己封装的镜像,来做一个自己趁手的起飞环境。

仓库地址: https://cnb.cool/znb/qifei (opens new window)

我创建了 qifei 这个仓库,里边通过如下信息,内置集成了我封装后的 debian (opens new window) 环境:

$ cat .ide/Dockerfile

FROM docker.cnb.cool/znb/images/debian

1
2
3

这个环境,你可以轻松拥有。只需 fork 我这个仓库,然后点击起飞即可:

My_Photor_1743079249463.webp

CNB 默认的临时环境已经集成了 docker 命令,而且支持 dind 的玩法,于是,起飞之后,你可以直接像我这么玩:

$ wget https://raw.githubusercontent.com/opsre/go-ldap-admin/refs/heads/main/docs/docker-compose/docker-compose.yaml
$ docker compose up -d

1
2

因为 CNB 针对许多开发相关的地址都做过加速,因此从 github 下载文件也是非常快的。

My_Photor_1743079764745.webp

然后点击到 PORTS 将内部端口映射出来:

My_Photor_1743079917242.webp

然后就可以在浏览器,或者本地调用映射出来的地址了。

这个起飞实在是太爽啦,当我第一次把这个流程跑通的时候,忍不住感叹了一句,CNB,ZNB。用上 CNB ,从此幸福一生。

# 进阶玩法

在 cnb 官方文档 (opens new window)介绍中,云原生开发环境,除了可以在 .ide/Dockerfile 中定义环境之外,还支持在 .cnb.yml 中进行定义,而且支持更加丰富的能力,比如支持自定义启动前后的命令。

比如使用如下代码定义:

$ cat .cnb.yml

$:
  vscode:
    - docker:
        image: docker.cnb.cool/znb/images/debian
      services:
        - vscode
        - docker
      stages:
        - name: 自定义启动后动作
          script: |
            cd /opt
            wget https://raw.githubusercontent.com/opsre/go-ldap-admin/refs/heads/main/docs/docker-compose/docker-compose.yaml
            docker compose up -d

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

这样子,当你点击起飞之后,就会自动将环境拉起来了。

通过拉起环境过程的构建日志,可以看到我们定义的拉环境命令在执行了:

My_Photor_1743080684559.webp

# 最后

CNB 目前在我个人内心,堪比 赛博菩萨,除了解决个人博客的流水线自动化之外,还满足了我随时拉起一个空白环境,做一些小实验,做一些临时测试的需求,更为重要的是,这个临时环境,还拥有天然的加速,执行 apt-get 安装,或者其他语言的依赖拉起,都是极其丝滑的体验。

# 补充

如上提到的构建以及云开发环境,在CNB 中,以核时作为计费单位,目前官方仍在公测中,提供免费+限免额度:

My_Photor_1743081181105.webp

详见:官方文档 (opens new window)

官方也会在一些直播活动时,赠送核时,可保持关注。基于 CNB打造出一个属于自己的第二开发世界。