在进行本题的操作前,建议先了解 Docker/Podman 的基本使用方式
腾讯云推出了产品云原生构建,但对比 GitHub Actions 等竞品,我们可以发现,CNB 的功能上实际是相对简单的,在实现上也是相对容易的,以至于我们甚至可以自己实现一个简化版的构建系统
我们知道,CI/CD 系统都是通过一个配置文件来描述整个工作流。我们也可以定义一个简单的工作流:
yaml
name: Cargo Build
use: docker.io/ubuntu:latest # 使用 docker.io 上的 ubuntu:latest 镜像
steps: # 定义了工作流中按顺序执行的每一步
- name: Update Env
run: apt-get update && apt-get upgrade
- name: Install Rust Toolchain
run: apt-get install rustup && rustup default stable
- name: Checkout
run: apt-get install git && git clone https://git.ltkk.run/koitococo/repo # fake repo url, should be replaced by any vaild value
- name: Build
run: cargo build --release我们发现,如果不考虑分布式,仅考虑在单个节点上,要实现这样一个简易的构建系统,我们只需要:
- 拉取镜像
- 创建容器,并在容器中启动我们的 daemon
- daemon 按工作流定义,按顺序运行命令
本题的任务:
- 构思一个设计方案,能实现上文所述的构建系统工作流,方案中适当包括一些技术细节
- 实现部分核心功能(如拉取镜像、创建容器等)
推荐使用 Go/Rust 完成本题
如果在设计或实现上遇到困难,可以与出题人联系
2025.09.28 Updates
这一题给的场景相对非常明确,而且是一个有很多实践的领域,所以我们希望看到的是:
- 超出上述基本功能的部分(如使用 Kubernetes 进行分布式构建、多租户场景下的资源分配和安全加固功能),这将会作为一个很大的加分项(不是必须)
- 你对这种 DevOps 模式的个人理解
- 你在构建这样一个自己的 DevOps 系统的过程中,如何优化 UX/DX,使其变的比现有的系统(在你看来)更好
- 在这种较大项目的开发过程中,体现出来的你的工程能力~~(也可以是提示词工程能力)~~
2025.10.13 Updates
考虑到工作量,本题在单人完成时无需使用 Kubernetes