Как я могу настроить значение -container-network в selenoid для каждой сборки jenkins?

Каждая сборка Jenkins создает сеть перед запуском тестов selenoid. например.,

Creating network "jenkinspr613build11_default". Название сети основано на PR и номере сборки.

Файл docker-compose.yaml имел следующую конфигурацию для службы selenoid:

selenoid:
    image: "aerokube/selenoid:latest-release"
    command: -listen :4444 -conf /etc/selenoid/browsers.json -limit 6 -video-output-dir /opt/selenoid/video/ -timeout 3m -container-network jenkinswebpr613build11_default
    ports:
      - "4444:4444"

Как я могу настроить значение -container-network для каждой сборки?

Могу ли я передать переменную среды в файл yaml?

Я могу запустить тесты локально, если жестко запрограммирую значение -container-network.


person Deepti K    schedule 11.01.2019    source источник


Ответы (2)


docker-compose строит сетевое имя из имени проекта (может быть явно передано с параметром -p в docker-compose up) и внутреннего имени.

Чтобы указать внутреннюю сеть, просто напишите ее явно в docker-compose.yml файле и свяжите с ней все службы, например:

docker-compose.yml

version: '3'
services:
  selenoid:
    ...
  networks:
    - my-lovely-net

networks:
  my-lovely-net:

Кроме того, если вы не хотите каждый раз воссоздавать сеть, а вместо этого хотите повторно использовать глобальную, вы должны сначала создать ее как docker network create foo, а затем сообщить docker-compose, что сеть является внешней:

docker-compose.yml

version: '3'
services:
  selenoid:
    ...
  networks:
    - my-lovely-net

networks:
  my-lovely-net:
    external: true
    name: foo
person grapes    schedule 11.01.2019
comment
Небольшое дополнение. Selenoid - это просто веб-сервис. Так что ничего особенного. Общий ответ Docker Compose будет работать. - person vania-pooh; 11.01.2019

Поскольку имя сети менялось с каждой сборкой Jenkins, я использовал другое решение:

Значение Network было установлено в переменной командной строки ${NETWORK_TAG}, как показано ниже:

selenoid:
    image: "aerokube/selenoid:latest-release"
    command: -listen :4444 -conf /etc/selenoid/browsers.json -limit 6 -video-output-dir /opt/selenoid/video/ -timeout 3m -container-network ${NETWORK_TAG}
    ports:
      - "4444:4444"

Команда docker-compose up выполнялась следующим образом:


NETWORK_TAG=$JENKINS_NETWORK_NAME docker-compose -f docker-compose-selenoid.yml up --build

Значение $JENKINS_NETWORK_NAME устанавливалось динамически для каждой сборки Jenkins.

person Deepti K    schedule 06.02.2019