Как динамически создать несколько узлов докеров 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

чтобы удалить ваши контейнеры из сетки. В идеале этот шаг должен быть на пост-стадии.

Другие вопросы по тегам