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

标签 continuous-integration gitlab-ci gitlab-ci-runner selenium-grid

我在我的 ci runner 中有这个工作。如果我使用 Selenium-Standalone-Chrome,它会起作用。但是试图让 Hubs 和 Nodes 工作,这样我就可以测试更多的浏览器。但是我无法让服务相互连接。

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

来自他们的 docs看起来我应该能够使用 selenium_hubselenium-hub 或通过将别名设置为 selenium_hub 以外的其他名称并使用该名称来连接到集线器。但是这些似乎都不适用于节点需要连接到集线器的 HUB_PORT_4444_TCP_ADDR,而是错误 将节点注册到集线器:http://selenium_hub:4444/grid/register 无法注册此节点:发送注册请求时出错:selenium_hub:名称或服务未知 无法注册此节点:集线器已关闭或未响应:selenium_hub:名称或服务未知

然后我需要它作为示例环境变量 命令/脚本选项中的 SELENIUM_HUB_ADRESS="http://selenium_hub:4444/wd/hub"正在运行。

最佳答案

默认情况下,Gitlab 使用 old linking of containers对于网络,这意味着只有构建容器才能访问服务容器。

您可以使用 network per build feature flag在您的情况下,您的 yaml 将如下所示:

verify_last_chrome_func:
  image: python:2.7
  stage: test_integration
  variables:
    # Enable network connection between services
    FF_NETWORK_PER_BUILD: 1
    # 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

关于continuous-integration - gitlab-ci 文件中的服务和作业脚本之间的联网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49185246/

相关文章:

gitlab - 配置 runner 同时运行多个作业

terraform - Terragrunt 输出到环境变量 GitLab CI/CD

gitlab - 如何使用 `extends` 和 `gitlab-runner exec`

gitlab - 在具有特定标签的运行者上运行特定作业

java - Java 的智能部署工具

google-app-engine - 使用 Cloud Build 和 VPC 连接器将 Node 应用程序自动部署到 App Engine

asp.net-mvc - 如何在没有互联网的情况下在构建服务器/生产服务器上使用 NuGet 包?

docker - 使用gitlab-ci时alpine无法访问docker守护程序

symfony - 如何将 Travis 用于子目录?

gitlab-ci-runner - 在 GitLab 运行器上配置缓存