gitlab-runner 的创建

创建 gitlab-runner 的容器

Caution

如果要创建新的 runner,要记得先把旧的配置文件夹删掉(/srv/gitlab-runner/config),因为这里多加了映射,要小心残留影响(我之前遇到的一个问题是 runner 信息页面多出来一个 id 为 <legacy> 的 runner,会被 gitlab 分配任务,但是又不会实际执行,导致 jobs 永远无法执行完成)。

启用 runner:

docker run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest

注册:注意 token 每次都不一样,url 一定得用内网(如果可能)而不是从公网绕一圈,不然速度跟不上。

gitlab-runner register --url YOUR_URL --token YOUR_TOKEN

修改好 gitlab-runner 的默认镜像。

注册完成后确保 runner 允许 untagged 的任务gitlab-runner status 这条命令的确是会报错,但是不用管,对结果没有影响。

修改 runner 配置:

sed -i 's,concurrent = 1,concurrent = 2,' /etc/gitlab-runner/config.toml
sed -i -E 's,volumes =.*,volumes = \["/cache"\, "/data/ci/data:/data:ro"\],g' /etc/gitlab-runner/config.toml
sed -i -E 's,\[runners.docker\].*,\[runners.docker\]\n    gpus = "all"\n    pull_policy = "if-not-present",g' /etc/gitlab-runner/config.toml

限制 GPU

如果不选择全部的 GPU,那么一定要在 gpus 后面加上引号,否则 docker 不能正常识别:

[[runners]]
    [[runners.docker]]
        gpus = '"device=3,4,5,6"'

限制 CPU

[[runners]]
    [[runners.docker]]
        cpus = "16"

2024 年 7 月 10 日:一定要用字符串!在配置中使用数字,然后在容器中直接重启服务是没有问题的,但是在容器重启的时候(比如机器断电导致容器关闭)就会有容器无法启动的问题。