0

我想创建一个 Jenkins 作业,它可以在我的自动化执行开始之前删除和创建 Selenium 网格 HUB/节点。作业应该能够根据作业参数创建节点数。请求是否有人可以提供执行相同操作的代码?

4

1 回答 1

0

如果我理解正确,您所描述的并不完全是动态容器创建/删除,因为您将在作业参数中指定节点数。

但是,实现此目的的一种方法是使用 docker-compose。您可以在 jenkins 工作中迈出一步,通过 docker-compose 启动网格(根据您想要的容器数量进行缩放),然后在后期再次删除网格。这可以通过詹金斯管道(jenkinsfile)来实现。

因此,docker-compose.yml 可能类似于以下内容:

version: '3'
services:

  hub:
    image: selenium/hub
    container_name: automation_hub
    ports:
      - "4444:4444"

    environment:
      GRID_MAX_SESSION: 16
      GRID_BROWSER_TIMEOUT: 3000
      GRID_TIMEOUT: 3000

  chrome:
    image: selenium/node-chrome
    depends_on:
      - hub
    environment:
      HUB_PORT_4444_TCP_ADDR: hub
      HUB_PORT_4444_TCP_PORT: 4444
      NODE_MAX_SESSION: 2
      NODE_MAX_INSTANCES: 2
    volumes:
      - /dev/shm:/dev/shm
    links:
      - hub

然后,您应该在 jenkins 作业中添加一个 shell 步骤,其中包含要创建的 chrome 容器数量的参数。

docker-compose -f <docker-compose.yml filepath> up --scale chrome=$CONTAINERS

现在,您应该运行网格。当你触发你的构建时,你应该包含参数 CONTAINERS。只需将您的测试指向“http://localhost:4444/wd/hub”,它们就应该在网格上运行

最后,使用以下命令创建一个 shell 步骤:

docker-compose down

从网格中删除您的容器。理想情况下,这一步应该在后期阶段。

于 2020-11-03T16:46:58.443 回答