Gitlab-CI: кросс-сервисная связь
В настоящее время я использую Gitlab-CI для тестирования java-приложения на основе jboss eap. Чтобы быть более точным, я использую инструмент Postman Newman для запуска некоторых тестов REST API на всех моих контроллерах.
Сейчас я делаю это с помощью внешнего сервера EAP, на котором размещается мое приложение только на время теста, но я бы хотел этого избежать и использовать службу gitlab-ci.
Единственная проблема заключается в том, что моим сервисам требуется база данных (pgsql), и я хотел бы также использовать сервис для этого, что подводит меня к моему основному вопросу; Является ли кросс-сервисная связь с gitlab-ci? есть ли способ получить это и запустить?
Спасибо, ребята, заранее!
3 ответа
В настоящее время нет способа сделать это.
Тем не менее, Gitlab имеет активную проблему для решения этой https://gitlab.com/gitlab-org/gitlab-runner/issues/1042.
После внедрения все службы должны находиться в одной сети и, таким образом, смогут разрешать IP друг друга по имени / псевдониму службы.
Теперь это возможно с помощью
FF_NETWORK_PER_BUILD
флаг функции. Вы можете добавить следующее в свой
.gitlab-ci.yaml
(в корне для всех заданий или для каждого задания).
variables:
FF_NETWORK_PER_BUILD: 1
Или в конфигурации бегуна.
Этот сетевой режим создает и использует новую определяемую пользователем сеть моста Docker для каждого задания. Определяемые пользователем мостовые сети подробно описаны в документации Docker.
В отличие от устаревших ссылок на контейнеры, используемых в других режимах сети, переменные среды Docker не являются общими для контейнеров.
Сети Docker могут конфликтовать с другими сетями на узле, включая другие сети Docker, если диапазоны CIDR уже используются. Пул адресов Docker по умолчанию можно настроить с помощью пула адресов по умолчанию в dockerd.
Чтобы включить этот режим, вы должны включить флаг функции FF_NETWORK_PER_BUILD.
Когда задание запускается, создается мостовая сеть (аналогично docker network create). После создания контейнеры службы и контейнер задания сборки подключаются к этой сети.
Контейнер, в котором выполняется задание, и контейнеры, в которых запущена служба, могут разрешать имена хостов и псевдонимы друг друга. Эта функциональность предоставляется Docker.
Контейнер задания также можно разрешить с помощью псевдонима сборки, поскольку имя хоста назначается GitLab.
Сеть удаляется по окончании работы.
Сотрудник GitLab здесь.
Один из способов сделать это - использовать концепцию подключенных сервисов Docker и GitLab CI/CD. Вы можете узнать больше об этом здесь