Конвейер CI / CD и сервер сборки

#jenkins #continuous-integration #jenkins-pipeline

#дженкинс #непрерывная интеграция #дженкинс-конвейер

Вопрос:

Видели следующий график, представляющий конвейер Jenkins:

 git push --> Git repo --> Jenkins CI server --> Maven build server --> Test server --> Deliver build artifacts --> Deploy
 

Учитывая, что это правильно, я изо всех сил пытаюсь понять, как вышеупомянутые разные (?) Серверы работают под капотом, и мне нужны некоторые разъяснения, чтобы процедуры Дженкинса не были просто черным ящиком.

  1. Jenkins CI server Maven build server и Test server действительно ли это один физический сервер?
  2. Если ответ на предыдущий вопрос положительный, эти 3 сервера являются разными логическими серверами?
  3. В моем понимании и в моем случае (проект Java Spring) сервер сборки Maven выполняет mvn install и, поскольку pom.xml содержит npm install npm run test команды plus, именно сервер сборки Maven выполняет тесты пользовательского интерфейса, а не тестовый сервер. Я прав?
  4. Выполняет ли тестовый сервер только внутренние приемочные тесты Java?

Комментарии:

1. 1. Мы не знаем. 2. Мы не знаем, все они могут быть запущены на хосте или в отдельных виртуальных машинах. 3. Мы не знаем, но, вероятно, ваш «тестовый сервер» — это среда развертывания для целей тестирования, и в этом случае да, потому что тестовый сервер не выполняет никаких тестов. 4. Мы не знаем, но в том же случае нет, потому что тестовый сервер не выполняет никаких тестов. Пожалуйста, сократите это до одного четкого вопроса с некоторым контекстом. Вероятно, вам следует начать с вопроса о том, кто настроил этот конвейер.

Ответ №1:

  1. Это может быть один физический или виртуальный сервер.
  2. НЕТ
  3. Чтобы использовать maven, вам просто нужно установить плагин maven в jenkins. Настройте, какую версию maven вы хотите использовать, в разделе «Управление дженкинсом» -> «Глобальная конфигурация инструментов» -> добавить необходимую версию maven.
  4. Зависит от того, какие тесты вы хотите запустить — вы можете повторить шаги из шага 3 для нужного вам инструмента или вы можете установить необходимые инструменты на сервере jenkins вручную и добавить его в PATH.

В конце просто используйте необходимые инструменты в вашем конвейере или другом king of job в jenkins.

Ответ №2:

Без дальнейшего контекста мы должны прояснить некоторые моменты:

  • Дженкинс может работать с несколькими узлами (могут быть реальными / виртуальными / модулями)
  • Дженкинс — оркестратор… Это означает, что он использует разные инструменты в порядке, заданном конвейером. Этот порядок в значительной степени таков: git> сборка> тестирование> доставка> развертывание
  • Сервер тестирования используется для установки программного обеспечения и запуска различных тестов, в значительной степени для нескольких команд.
  • Серверы сборки используются для выполнения команд для сборки программного обеспечения

С этим ясно, вот вопросы:

1. — Зависит от вашей инфраструктуры. Дженкинс работает с исполнителями, которые могут выполняться на главном сервере или в узлах. Если ваш Jenkins — это только один сервер, тогда да… Это один физический сервер. Если вы используете узлы, то более вероятно, что вы обнаружите, что один узел управляет зданием, а другой — тестами. Однозначный ответ лежит внутри вашего Дженкинса и вашего конвейера

2.- Нет… Даже с инфраструктурой Jenkins master-agent сборка и тестирование выполняются внутри Jenkins.

3. — Зависит от вашей концепции тестового сервера. Если вы определяете его как сервер, который вы используете в качестве целевого для целей тестирования, то ответ будет отрицательным… Если вы определяете тестовый сервер как машину, которая выполняет тест, то ответ — да.

4. — Зависит от того, что вы вводите или тестируете, вы автоматизировали. Вы можете запускать модульные тесты, регрессионные тесты, дымовые тесты и т.д. Например, у вас может быть какой-то модульный тест для вашего серверной части и какой-то тест в karma для вашего пользовательского интерфейса. Опять же, в вашем случае вы должны проверить свой конвейер и код, чтобы проверить, какие тесты вы выполняете.