Continuous integration gitlab ci文件中服务和作业脚本之间的联网

Continuous integration gitlab ci文件中服务和作业脚本之间的联网,continuous-integration,selenium-grid,gitlab-ci,qa,gitlab-ci-runner,Continuous Integration,Selenium Grid,Gitlab Ci,Qa,Gitlab Ci Runner,我在我的ci runner中有这份工作。如果我使用Selenium单机版Chrome,它就可以工作。但我试图让集线器和节点工作,这样我就可以测试更多的浏览器。但是我很难让这些服务互相连接 verify_last_chrome_func: image: python:2.7 stage: test_integration variables: # Grid Options GRID_TIMEOUT: '300000' SHM_SIZE: '512MB'

我在我的ci runner中有这份工作。如果我使用Selenium单机版Chrome,它就可以工作。但我试图让集线器和节点工作,这样我就可以测试更多的浏览器。但是我很难让这些服务互相连接

verify_last_chrome_func:
  image: python:2.7
  stage: test_integration
  variables:
    # Grid Options
    GRID_TIMEOUT: '300000'
    SHM_SIZE: '512MB'
    GRID_BROWSER_TIMEOUT: '300000'
    GRID_NEW_SESSION_WAIT_TIMEOUT: '300000'
    GRID_MAX_SESSION: '20'
    # Node Options
    HUB_PORT_4444_TCP_ADDR: 'selenium_hub'
    # HUB_PORT_4444_TCP_ADDR: '172.17.0.4' # This works if I can guess what the address will be. 
    HUB_PORT_4444_TCP_PORT: '4444'
  services:
    - name: selenium/hub:3.9.1-actinium
      alias: selenium_hub
    - name: selenium/node-chrome:3.9.1-actinium
      alias: current_chrome_node
  script:
    - SELENIUM_HUB_ADRESS="http://selenium_hub:4444/wd/hub" python /example_test.py
从他们的观点来看,似乎我应该能够使用
selenium\u-hub
selenium-hub
或通过将别名设置为selenium\u-hub以外的其他名称并使用该名称来连接到hub。但是这些似乎都不适用于节点需要连接到集线器的集线器\端口\端口\ TCP\地址,而是错误

将节点注册到中心:http://selenium_hub:4444/grid/register
无法注册此节点:发送注册请求时出错:Seleniu\u hub:名称或服务未知
无法注册此节点:中心已关闭或没有响应:Seleniu\u中心:名称或服务未知

然后我需要它作为环境变量的例子
SELENIUM\u HUB\u地址=”http://selenium_hub:4444/wd/hub“中的命令/脚本选项正在运行

默认情况下,Gitlab使用用于联网,这意味着只有构建容器可以访问服务容器

您可以在您的情况下使用yaml,您的yaml如下所示:

verify_last_chrome_func:
图片:python:2.7
阶段:测试与集成
变量:
#启用服务之间的网络连接
FF_网络每个构建:1
#网格选项
网格超时:“300000”
SHM_大小:“512MB”
网格浏览器超时:“300000”
网格\u新建\u会话\u等待\u超时:“300000”
网格最大会话:“20”
#节点选项
集线器\u端口\u 4444\u TCP\u地址:“selenium\u集线器”
#HUB_PORT_4444_TCP_ADDR:'172.17.0.4'#如果我能猜出地址是什么,这就行了。
集线器端口:TCP端口:4444
服务:
-名称:硒/中心:3.9.1-锕
别名:Seleniu-hub
-名称:硒/节点铬:3.9.1-锕
别名:当前\u chrome\u节点
脚本:
-SELENIUM\u HUB\u地址=”http://selenium_hub:4444/wd/hub“python/example_test.py

您是否在没有别名的情况下尝试过这一功能,只是请求
http://selenium-hub:4444/grid/register
?我使用
selenium hub
selenium\u hub
尝试了不带别名的名称。应该注意的是,大多数测试都是使用“
gitlab runner exec docker验证\u last\u chrome\u func
命令。我也有同样的问题,并且尝试了不同的别名和远程主机选项,但都没有用。如果您使用docker compose up启动一个新容器并需要它连接到服务?gitlab ci在运行测试时创建网络,并且名称是随机的,因此使用docker compose创建的任何容器都无法连接,因为它不在同一网络中。