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. Вы можете узнать больше об этом здесь

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