如何动态创建多个selenium docker节点



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

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

然而,实现这一点的一种方法是使用docker compose。你可以在詹金斯的工作中有一个步骤,你可以通过docker compose(根据你想要的容器数量进行缩放(来旋转网格,然后在后期再次移除网格。这可以通过jenkins管道(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

从网格中移除容器。理想情况下,这一步骤应该在后期阶段进行。

最新更新