在进行本题的操作前,建议先了解 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 完成本题
如果在设计或实现上遇到困难,可以与出题人联系