ruby-on-rails - 在本地 Gitlab Runner 容器中调试
问题描述
我正在尝试通过在本地执行一些 Rails 测试来使用 Gitlab CI Runner,如下所示:
gitlab-runner exec docker rspec
测试使用无头 Chrome 将图像渲染到容器中某处的目录中。我需要检查此图像以将其与预期结果进行比较。
本地调试策略,例如puts
和byebug
不起作用。我有哪些选择?
解决方案
从评论继续:您可以注册一个带有卷映射到主机驱动器的运行器,例如:
配置文件
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 :
为跑步者设置一个单独的网络:
$ docker network create gitlab-runner-net
运行主 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
向 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 最近在设置私有运行器时遇到了一些问题。
推荐阅读
- java - 无法在编辑文本中显示大地址
- python - 将嵌套的 json 转换为没有嵌套对象的字典格式
- c - 是否可以创建一个接受 3 个整数并在不使用数组的情况下输出奇数/偶数整数的程序?
- java - Request-Body(req.body) 显示值但 Request-QueryParams(req.queryParams) 显示空值?
- java - 这个关键字不代表一个对象
- javascript - 使用 clipboard.js 时数据剪贴板文本不起作用
- android-room - 错误:不兼容的类型:SupportSQLiteDatabase 无法转换为 AppDatabase
- angular - 如何在 firebase 数据库中执行删除操作...我只需要从我的 firebase 数据库中删除一条记录
- python - 在redis中批量上传设置过期时间
- reactjs - 我试图隐藏和显示基于状态的元素,但它不起作用?