注册 gitlab runner

本文使用 docker 引擎。详细内容参考官网

下载镜像

docker pull gitlab/gitlab-runner:latest

先下载下载,在做其他事情,启动的时候会很快。

生成配置(注册容器)

操作都在 gitlab-runner 目录下执行。

docker run --rm -it -v /root/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:latest register

详细说明参考 官网

url: 你的 gitlab 服务器的 url

token: 用管理员账户可以在 /admin/runners 下看到,点击路径为 管理中心 > 概览 > runner

runner executor:我选的 docker

image: 我输入的 centos:7

完成之后可以 ctrl + c 结束,此时/root/gitlab-runner/config目录下会多一个 config.toml 文件。

样例配置参考

理论上直接复制这份文件改改也行。

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "第一个 runner"
  url = "<填写 gitlab url>"
  id = 1
  token = "<填写从 gitlab 管理中心复制过来的 token>"
  token_obtained_at = 2022-10-10T01:34:00Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "centos:7"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0

启动

我使用的 docker compose 启动

此文件在 gitlab-runner 目录下。

version: '3.3'
services:
    gitlab-runner:
        container_name: gitlab-runner
        restart: always
        volumes:
            - ./config:/etc/gitlab-runner
            - /var/run/docker.sock:/var/run/docker.sock
        image: gitlab/gitlab-runner:latest
        command: register

检查

如果完成,在 gitlab 的管理中心 runner 栏目下可以看一个 runner。

docker in docker

如果你需要在 docker 里执行 docker ,那么可能会遇到一些问题。

比如像这样的错误 error during connect: Get "http://docker:2375/v1.24/containers/json": dial tcp: lookup docker on 223.5.5.5:53: no such host

将 “/var/run/docker.sock:/var/run/docker.sock” 复制到 /root/gitlab-runner/config/config.toml 里的 ,使其长得看起来像这样:

    volumes = ["/var/run/docker.sock:/var/run/docker.sock","/cache"]

然后重启你的 runner ,类似于这样的命令

gitlab-runner restart
如果你使用`shell 执行器`

需要将 gitlab-runner 用户添加到 docker 组

usermod -aG docker gitlab-runner

更详细的内容,那么请访问这里