Как динамически создать несколько узлов докеров Selenium?
Я хотел создать задание Jenkins, которое могло бы удалить и создать концентратор / узел сетки Selenium до начала выполнения моей автоматизации. Задание должно иметь возможность создавать количество узлов на основе параметра задания. Спросите, может ли кто-нибудь предоставить код для того же?
0 ответов
Если я правильно понимаю, то, что вы описываете, - это не совсем создание / удаление динамического контейнера, поскольку вы указываете количество узлов в параметре задания.
Однако один из способов добиться этого - использовать 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 с параметром количества хромовых контейнеров, которые вы хотите создать.
docker-compose -f <docker-compose.yml filepath> up --scale chrome=$CONTAINERS
Теперь ваша сетка должна работать. Когда вы запускаете свою сборку, вы должны включить параметр CONTAINERS. Просто укажите свои тесты на "http://localhost:4444/wd/hub", и они должны работать в сетке.
Наконец, создайте шаг оболочки с помощью команды:
docker-compose down
чтобы удалить ваши контейнеры из сетки. В идеале этот шаг должен быть на пост-стадии.