#jenkins #continuous-integration #jenkins-pipeline
#дженкинс #непрерывная интеграция #дженкинс-конвейер
Вопрос:
Видели следующий график, представляющий конвейер Jenkins:
git push --> Git repo --> Jenkins CI server --> Maven build server --> Test server --> Deliver build artifacts --> Deploy
Учитывая, что это правильно, я изо всех сил пытаюсь понять, как вышеупомянутые разные (?) Серверы работают под капотом, и мне нужны некоторые разъяснения, чтобы процедуры Дженкинса не были просто черным ящиком.
Jenkins CI server
Maven build server
иTest server
действительно ли это один физический сервер?- Если ответ на предыдущий вопрос положительный, эти 3 сервера являются разными логическими серверами?
- В моем понимании и в моем случае (проект Java Spring) сервер сборки Maven выполняет
mvn install
и, посколькуpom.xml
содержитnpm install
npm run test
команды plus, именно сервер сборки Maven выполняет тесты пользовательского интерфейса, а не тестовый сервер. Я прав? - Выполняет ли тестовый сервер только внутренние приемочные тесты Java?
Комментарии:
1. 1. Мы не знаем. 2. Мы не знаем, все они могут быть запущены на хосте или в отдельных виртуальных машинах. 3. Мы не знаем, но, вероятно, ваш «тестовый сервер» — это среда развертывания для целей тестирования, и в этом случае да, потому что тестовый сервер не выполняет никаких тестов. 4. Мы не знаем, но в том же случае нет, потому что тестовый сервер не выполняет никаких тестов. Пожалуйста, сократите это до одного четкого вопроса с некоторым контекстом. Вероятно, вам следует начать с вопроса о том, кто настроил этот конвейер.
Ответ №1:
- Это может быть один физический или виртуальный сервер.
- НЕТ
- Чтобы использовать maven, вам просто нужно установить плагин maven в jenkins. Настройте, какую версию maven вы хотите использовать, в разделе «Управление дженкинсом» -> «Глобальная конфигурация инструментов» -> добавить необходимую версию maven.
- Зависит от того, какие тесты вы хотите запустить — вы можете повторить шаги из шага 3 для нужного вам инструмента или вы можете установить необходимые инструменты на сервере jenkins вручную и добавить его в PATH.
В конце просто используйте необходимые инструменты в вашем конвейере или другом king of job в jenkins.
Ответ №2:
Без дальнейшего контекста мы должны прояснить некоторые моменты:
- Дженкинс может работать с несколькими узлами (могут быть реальными / виртуальными / модулями)
- Дженкинс — оркестратор… Это означает, что он использует разные инструменты в порядке, заданном конвейером. Этот порядок в значительной степени таков: git> сборка> тестирование> доставка> развертывание
- Сервер тестирования используется для установки программного обеспечения и запуска различных тестов, в значительной степени для нескольких команд.
- Серверы сборки используются для выполнения команд для сборки программного обеспечения
С этим ясно, вот вопросы:
1. — Зависит от вашей инфраструктуры. Дженкинс работает с исполнителями, которые могут выполняться на главном сервере или в узлах. Если ваш Jenkins — это только один сервер, тогда да… Это один физический сервер. Если вы используете узлы, то более вероятно, что вы обнаружите, что один узел управляет зданием, а другой — тестами. Однозначный ответ лежит внутри вашего Дженкинса и вашего конвейера
2.- Нет… Даже с инфраструктурой Jenkins master-agent сборка и тестирование выполняются внутри Jenkins.
3. — Зависит от вашей концепции тестового сервера. Если вы определяете его как сервер, который вы используете в качестве целевого для целей тестирования, то ответ будет отрицательным… Если вы определяете тестовый сервер как машину, которая выполняет тест, то ответ — да.
4. — Зависит от того, что вы вводите или тестируете, вы автоматизировали. Вы можете запускать модульные тесты, регрессионные тесты, дымовые тесты и т.д. Например, у вас может быть какой-то модульный тест для вашего серверной части и какой-то тест в karma для вашего пользовательского интерфейса. Опять же, в вашем случае вы должны проверить свой конвейер и код, чтобы проверить, какие тесты вы выполняете.