Как я могу настроить значение `-container-network` в selenoid для каждой сборки jenkins?
Каждая сборка Jenkins создает сеть перед запуском тестов на селеноид. например,
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
,
2 ответа
docker-compose
строит сетевое имя из имени проекта (может быть передано явно с -p
параметр для docker-compose up
) и внутреннее имя.
Чтобы указать внутреннюю сеть, просто напишите это явно в docker-compose.yml
файл и связать все сервисы к нему, как:
докер-compose.yml
version: '3'
services:
selenoid:
...
networks:
- my-lovely-net
networks:
my-lovely-net:
Кроме того, если вы не хотите каждый раз воссоздавать сеть, а вместо этого хотите повторно использовать глобальную сеть, вы должны сначала создать ее следующим образом: docker network create foo
а потом скажи docker-compose
что сеть внешняя:
докер-compose.yml
version: '3'
services:
selenoid:
...
networks:
- my-lovely-net
networks:
my-lovely-net:
external: true
name: foo
Поскольку имя сети менялось при каждой сборке 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.