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