Gitlab-ci запускает сборку и передает тестирование на отдельную машину

Я относительно новичок в CI, а также в Gitlab/Gitlab-CI. Недавно я установил Gitlab в качестве нашего небольшого магазина VCS и начал изучать Gitlab-CI для нашей сборки. Наш код в основном ASP.Net C#, но я считаю, что настройка является общей. Теперь мы думаем запустить модульное тестирование после сборки, но так как наш модульный тест выполняется намного дольше, мы исследуем, можем ли мы сконфигурировать для сборки на одной машине, и иметь другую выделенную тестовую машину для запуска этих модульных тестов и может быть, включить автоматическое тестирование на основе селена в будущем.

Я хотел бы знать, возможно ли это и как это нужно настроить, чтобы процесс сборки мог передать тестирование на другую машину. Также можно ли отправить отдельное уведомление для сборки и тестирования.

РЕДАКТИРОВАТЬ: Это не дубликат Как я могу создать 2 этапа, которые каждый на разных бегуна? ОП в этом вопросе задает вопрос о проведении 2 параллельных сборок + тест на машине сравнения. Я ищу способы запустить сборку на одной машине, а затем протестировать на другой, но результат суммируется за 1 процесс сборки в Gitlab CI.

2 ответа

Вот цитата из документации GitLab:

Используйте теги

Вы должны настроить бегуна, чтобы иметь возможность запускать все различные типы заданий, с которыми он может столкнуться в проектах, над которыми он работает. Это было бы проблематично для большого количества проектов, если бы не теги.

Помечая Runner для типов заданий, которые он может обрабатывать, вы можете быть уверены, что совместно используемые Runner будут запускать только те задания, которые у них есть для выполнения.

Например, в GitLab у нас есть бегуны, помеченные "rails", если они содержат соответствующие зависимости для запуска тестовых наборов Rails.

Вот пример файла.gitlab-ci.yml. Таким образом, вы можете настроить еще один (даже более) бегун с необходимыми тегами и обрабатывать ваши долгосрочные тесты отдельно.

Это стандартный способ работы путем определения stages,с помощью artifacts и используя tags идентифицировать ваш сервер сборки / тестирования, например:

stages:
 - build
 - test

build:
  stage: build
  tags: build-server-tag
  script:
  - ./buildmyproject
  - mkdir tests
  - cp myexe tests/
  artifacts:
    paths:
      - tests
test:
  stage: test
  tags: test-server-tag
  dependencies:
   - build
  variables:
    GIT_STRATEGY: none
  script:
  - tests/myexe

это выполнит myexe на вашем тестовом сервере, который построен на вашем сервере сборки.

нота

  • Для ясности добавлены зависимости, по умолчанию все артефакты будут загружены с предыдущих этапов.
  • GIT_STRATEGY: none не будет тянуть ваш репозиторий на тестовый сервер.
Другие вопросы по тегам