Skip to content

辅助工具

Estimated time to read: 1 minute

这是助教工具仓库 ZJU-OS/tool 的文档。

容器镜像

  • 软件包只要发行版有并且能用,就用发行版的。
  • 源码也从发行版获取。

多平台镜像构建

课程需要支持使用 amd64 和 arm64 平台的学生完成实验,因此使用 Multi-arch build and images, the simple way | Docker 构建多平台镜像,流程如下:

  • 分别在 arm64 和 amd64 平台上执行

    make build-image
    make push-image
    
  • 然后在其中一个地方执行

    make push-multi
    

    拉取在另一个平台上构建的镜像,使用 docker manifest 合成 latest 描述文件并推送。

相比用 Tag 区分不同架构,这么折腾一番可以让 Docker 自动匹配到对应架构,镜像名不用指定标签。

理论上来说,使用 Docker buildx 的 Multi-platform builds 就能在一个平台上完成所有构建,更加简洁。但是:

  • 笔者没有配置成功
  • 跨架构运行实在是太慢了

但 Manifest 是 Docker 的实验性功能,有时候创建 latest 并不覆盖,挺奇怪的。

GitLab CI 评测

ZJU-OS/tool 仓库下的 zjugit-ci 包含了评测 Runner 容器的配置,并且用 Makefile 包装了常用命令:

# (初次运行)注册 Runner
make TOKEN= register
# 启动 Runner
make

如何调试 CI?

  • scripts 加个 sleep 1d,然后去宿主机 attach 到容器
  • 使用 docker inspect 查看容器的详细信息