Github 仓库
https://github.com/nanmu42/tart
摘要
蛋挞是一个教学目的,非官方的 Gitlab Runner ,通过简明地实现 Gitlab Runner 功能的一个子集,展示 Gitlab Runner 的设计和实现方法。
举个例子,蛋挞可以运行自己的 CI job ,运行自己的测试和编译自己。
特色:
- 折腾;
- 使用 Firecracker 和
/dev/kvm
,让每个 job 在一个两秒内启动的虚拟机中运行,我目前没在公开资料里查到这么做的; - 代码量少,大概 2000 行实现了 Gitlab Runner 的核心功能:job 的获取、执行、环境隔离、日志和结果的上报;
- 在每个星期四运行 job 会有特殊效果。
只实现了核心功能,产物上传、service 这些功能是不支持的。换句话说,不要用于生产环境(真的会有人这么做吗)。
使用方法
蛋挞需要在可以访问 /dev/kvm
的 Linux 环境下运行:
sudo setfacl -m u:${USER}:rw /dev/kvm
- 从 release 页面下载蛋挞和 Firecracker 的二进制,并将它们置于
$PATH
- 从 release 页面下载 RootFS 和 Linux 内核,把它们放到工作文件夹,比如
~/tart
- 为 tart 创建的虚拟机预先配置网络,请参考
rootfs/setup-tuntap.sh
- cd 到工作文件夹
- 注册 tart 为你项目的 Gitlab Runner:
tart register --endpoint https://gitlab.example.com --token your_token_here > tart.toml
- 启动 tart:
tart run
- 在 Gitlab 上触发 CI ,为了确保 job 会调度到 tart 上,你可能得禁用项目的 shared runner
- 观看 tart 工作(或者爆炸)
编译方式
make
产物在 bin
文件夹中。
虚拟机的 RootFS 和 Linux 内核编译请参考 rootfs
文件夹。
为啥叫蛋挞?
我喜欢吃蛋挞。
许可证
MIT
请自由享受和贡献开源。
第三方项目许可证请参阅 THIRD_PARTY_LICENSES.md
.
logo 的照片来自于 Ashley Byrd on Unsplash ,Gopher 在 gopherize.me 生成。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于