首页 > 解决方案 > 在本地 Gitlab Runner 容器中调试

问题描述

我正在尝试通过在本地执行一些 Rails 测试来使用 Gitlab CI Runner,如下所示:

gitlab-runner exec docker rspec

测试使用无头 Chrome 将图像渲染到容器中某处的目录中。我需要检查此图像以将其与预期结果进行比较。

本地调试策略,例如putsbyebug不起作用。我有哪些选择?

标签: ruby-on-railsdockerrspecgitlabgitlab-ci-runner

解决方案


从评论继续:您可以注册一个带有卷映射到主机驱动器的运行器,例如:

配置文件

concurrent = 6
check_interval = 0

[[runners]]
  name = "runner name"
  url = "******"
  token = "******"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "docker:17.06.0-ce"
    privileged = false
    disable_cache = false
    volumes = ["/srv/gitlab-runner/images:/usr/src/app/image-dir", "/cache"]
    shm_size = 0
  [runners.cache]

注意volumes上面的关键字。

如果您需要在指定此卷的情况下运行 dockerized gitlab-runner :

  1. 为跑步者设置一个单独的网络:

    $ docker network create gitlab-runner-net
    
  2. 运行主 GitLab-runner docker 容器:

    $ sudo docker run -d \
    --name gitlab-runner \
    --privileged \
    --restart always \
    --network gitlab-runner-net \
    -v /srv/gitlab-runner/config.toml:/etc/gitlab-runner/config.toml \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /srv/gitlab-runner/images:/usr/src/app/image-dir
    -e DOCKER_HOST=unix:///var/run/docker.sock \
    gitlab/gitlab-runner:alpine
    
  3. 向 GitLab 注册跑步者:

    $ docker run -it --rm \
    -v /srv/gitlab-runner/config.toml:/etc/gitlab-runner/config.toml \
    gitlab/gitlab-runner:alpine \
      register \
      --executor docker \
      --docker-image docker:17.06.0-ce \
      --docker-volumes /var/run/docker.sock:/var/run/docker.sock
      --docker-volumes /srv/gitlab-runner/images:/usr/src/app/image-dir
    

config.toml并使用上述体积映射修改跑步者。

笔记

上面的配置不是唯一的,它只是一个参考点,用于显示如何映射卷以及一般如何设置运行的 dind 运行器,因为 gitlab 最近在设置私有运行器时遇到了一些问题。


推荐阅读