1

我的 CI 管道在运行的最后销毁阶段失败,molecule test因为关闭 Docker 容器的默认超时时间不够大。

这是我得到的错误:

msg: 'Error removing container c6fff0374c2d8dc2b20ed991152ce8db5bbdf05a635c26648ce3c0a82c491eb2: UnixHTTPConnectionPool(host=''localhost'', port=None): Read timed out. (read timeout=60)'

似乎我的容器太大和/或我的 CI 运行器机器功能不够强大,无法在 60 秒默认超时内完成。

以下是我在此主题上找到的建议:

  • 重启docker服务: systemctl start docker
  • 使用环境变量更改 tiemout:
export DOCKER_CLIENT_TIMEOUT=120
export COMPOSE_HTTP_TIMEOUT=120

重新启动 docker 并不能解决我的问题,而且在我的 CI 运行器上也不方便。

我尝试在molecule.yml中添加这样的环境变量:

provisioner:
  name: ansible
  env:
    MOLECULE_NO_LOG: "false"
    DOCKER_CLIENT_TIMEOUT: "240"
    COMPOSE_HTTP_TIMEOUT: "240"

但是 Docker 似乎没有得到它们,因为我仍然收到相同的错误消息 specifiying (read timeout=60)

无济于事,我还尝试在分子.yml 的驱动程序部分中定义它们:

driver:
  name: docker
  env:
    DOCKER_CLIENT_TIMEOUT: "240"
    COMPOSE_HTTP_TIMEOUT: "240"

我成功结束工作的唯一方法是当时针对单个主机运行测试,我想这减少了我的 CI 运行器在 60 秒内关闭容器所需的资源。然而,这不是一个合适的解决方案,因为它需要人为地复杂化我的工作定义。

没有办法为 Docker 驱动程序提供环境变量吗?

作为记录,这是我的设置:

  • Python 3.6.8
  • 可靠的 2.10.3
  • 分子 3.2.0 使用 python 3.6
    • 可靠:2.10.3
    • 委托:3.2.0 来自分子
    • 泊坞窗:0.2.4 来自分子泊坞窗
  • Docker 版本 19.03.14,构建 5eb3275d40
  • GitLab 社区版 13.7.1
  • gitlab-runner 13.6.0
4

0 回答 0