Эта среда разработки на основе Docker предназначена для новых участников предупреждений Дженкинса и плагинов покрытия, чтобы сократить начальное время наращивания. Он состоит из следующих частей:
Я представил эту среду разработки на зарегистрированной онлайн -встрече Jenkins в январе 2022 года.
Среда разработки была протестирована на MacOS, Ubuntu Linux (в виртуальной машине, работающей на MacOS) и Windows. Запросы на вытягивание всегда приветствуются.
Последняя версия следующих инструментов:
Кроме того, требуются последние версии следующих инструментов:
Если возникают ошибки, обратите внимание на намеки на устранение неполадок ниже. Для пользователей Windows: используйте Git Bash, чтобы выполнить сценарии оболочки.
./bin/clone-repos-https.sh (или ./bin/clone-repos.sh , если у вас уже есть ключ SSH в Github). Вы должны подождать, пока сборка не достигнет успеха, прежде чем открыть IntelliJ, в противном случае IntelliJ не найдет все сгенерированные классы. В первый раз пользователям Maven нужно подождать пару минут, пока все зависимости не будут загружены с Maven Central.warnings-ng-plugin-devenv./bin/jenkins.sh . Эта команда создает изображение Jenkins Docker, загружает все зарегистрированные плагины и инициализирует рабочее пространство Jenkins с некоторыми заданиями. Это также требует нескольких минут (см. Шаг 9). Если все загрузки преуспели, но установка не удалась из -за ошибок, исправьте их и выполните mvn -V -U -e install –DskipTests чтобы повторно повторно установки.
Если командная строка ошибка «слишком длинная». происходит, выполнить следующие шаги:
@argfile (Java9+)Если тесты не сняты из -за тайм -аута тестирования Дженкинса, выполните следующие шаги:
-Djenkins.test.timeout=1000 . Это увеличивает ограничение тайм -аута до 1000 секунд. Вы можете использовать простой скрипт оболочки ( ./bin/clone-repos.sh ), чтобы клонировать и построить модули за один шаг. Сценарий проверяет следующие модули, используя протокол GIT SSH. Это требует, чтобы вы зарегистрировали свой открытый ключ в GitHub. Если у вас нет ключей в GitHub, вы можете альтернативно использовать скрипт ./bin/clone-repos-https.sh , который использует протокол HTTPS.
Когда вы планируете предоставить запрос на привлечение одного из плагинов, вам необходимо создать вилку репозитория и внести все изменения в этой вилке. Я создал документацию по совместной работе GitHub в своем проекте стиля кодирования.
Intellij (Ultimate) является основной поддерживаемой средой разработки для плагина предупреждений. Предопределенный проект хранится в папке .idea , который ссылается на все модули плагина предупреждений. Этот проект содержит пресеты моего стиля кодирования и некоторые другие полезные конфигурации.
Также следует использовать другие IDE (Eclipse, Netbeans, Visual Studio Code).
Используйте предоставленные конфигурации Intellij Run All in [module-name] чтобы запустить тесты и интеграции соответствующего модуля. Эти конфигурации уже настроены для записи охвата ветвей соответствующих пакетов модулей (используйте Run with Coverage ).
Прежде чем вы сможете отладить свои изменения, вам сначала нужно выяснить, где работает ваш код: на контроллере или на агенте? Если вы не уверены, тогда запустите оба удаленных отладчика, установите некоторые точки останова и подождите, пока соответствующий отладчик остановится.
Конфигурация Docker Compose запускает контроллер Jenkins автоматически в режиме «отладки», то есть, он прослушивает запросы удаленной отладки. Если ваш код работает в контроллере, вам необходимо прикрепить удаленный отладчик по адресу localhost:8000 (сопоставлен с тем же портом в контейнере Docker). Используйте предоставленную конфигурацию отладки Jenkins Controller (Remote Debugger) , чтобы подключить отладчика в IntelliJ.
Конфигурация Docker Compose также запускает агент Jenkins автоматически в режиме «отладки», т. Е. Он прослушивает запросы удаленной отладки. Прикрепите удаленный отладчик по адресу localhost:8001 (сопоставлен с тем же портом в контейнере Docker) к коду отладки, который работает на агенте. Используйте предоставленную конфигурацию отладки Jenkins Agent (Remote Debugger) , чтобы подключить отладчика в IntelliJ.
Тесты пользовательского интерфейса могут быть запущены с использованием соответствующих UI Tests [module] (Firefox) или UI Tests [module] (Chrome) . Обратите внимание, что оба запуска требуют установки соответствующих драйверов селена. Если эти драйверы не установлены в /opt/bin на вашей локальной машине, вам необходимо адаптировать конфигурации запуска, чтобы соответствовать вашей настройке.
Все тесты пользовательского интерфейса требуют выполнения в разделе «Данного предмета» (т. Е., Тестирование Дженкинса, JUT), см. Проект Harness Harness для приема для получения более подробной информации.
Эта среда разработки содержит индивидуальную установку Jenkins, в которой вы можете развернуть свои модифицированные плагины, чтобы вы могли видеть свои изменения непосредственно в некоторых предварительно настроенных заданиях, которые используют эти плагины.
Начните предоставленный контроллер Jenkins в этом проекте (вам нужно установить Docker и Docker-Compose). Откройте терминал и запустите ./jenkins.sh в папке верхнего уровня. Эта команда представляет собой обертку для docker-compose up : она использует правильные настройки пользователя и группы, так что разрешения громкости Docker для домашней папки Jenkins были правильно установлены. Эта команда создает контейнер Docker для контроллера Jenkins и один для агента Java. Это потребует некоторое время при первом вызове, так как будут составлены изображения Docker. После того, как изображения были созданы, будут начаты следующие два контейнера:
Затем вы можете открыть Jenkins на URL http: // localhost: 8080/. Используйте следующие учетные данные, чтобы войти в систему как администратор:
Домашний каталог контроллера Дженкинса (jenkins_home) монтируется в виде тома Docker. Т.е. это видно на хосте как обычный каталог по адресу ./docker/volumes/jenkins-controller . Он выживет в сессиях и может быть изменен непосредственно на хосте, см. В официальной документации подробно. Это помогает осмотреть файлы, которые были созданы контроллером Jenkins.
Из -за проблемы с производительностью в плагине Jenkins's Job DOM, настройка нового экземпляра Jenkins очень медленная. Поэтому имеет смысл удалить конфигурацию работы в вашем файле jenkins.yaml после создания заданий. Вы можете перезаписать содержание файла ./docker/volumes/jenkins-home/jenkins.yaml в вашем недавно созданном экземпляре Jenkins с контентом в jenkins-no-jobs.yaml .
Объемы под macos довольно медленные. На моем MacBook, работающем с предоставленной задачей Jenkins of the analysis-model в контейнере Docker, медленнее, чем выполнение той же работы Jenkins в контейнере Docker, который работает в виртуальной машине Linux на том же MacBook (звучит как бы абсурдно?).
После того, как вы закончите свои локальные изменения в разработке (то есть, модульные тесты станут зелеными), вы должны проверить свои изменения в Дженкинсе. Это также помогает подготовить интеграционный тест или тест пользовательского интерфейса для ваших изменений.
Если у вас есть только изменения в модуле analysis-model (и вы не добавили новые методы API), вам необходимо восстановить и установить модуль Maven Module analysis-model.jar , а затем восстановить соответствующие плагины Jenkins Prapper analysis-model-api-plugin . Этот плагин должен быть развернут в Дженкинсе.
Этот процесс упрощается, запустив Script ./bin/go.sh в модуле analysis-model , он установит модульный analysis-model.jar в вашем локальном хранилище Maven. Затем этот сценарий создаст фактический плагин и развернется его в Дженкинс.
Если у вас есть только изменения в плагине предупреждений-NG, вам необходимо восстановить warnings-ng.jpi и развернуть его в Jenkins. Вы можете использовать один из следующих сценариев оболочки для этой задачи:
./bin/clean.sh : создает плагин, используя mvn clean install и развертывает его на успехе в экземпляре Jenkins../bin/go.sh : создает плагин с использованием mvn clean install -DskipITs (пропускает интеграционные тесты) и развертывает его на успехе в инстанции Jenkins../bin/skip.sh : создает плагин с использованием mvn clean install -DskipTests (пропускает все тесты и статический анализ) и развертывает его на успехе в экземпляр Jenkins.Тодо
Если у вас есть изменения в одном из плагинов ForeSics (реализация API или GIT), вам необходимо восстановить эти плагины Jenkins и развернуть их в экземпляре Jenkins.
Чтобы упростить этот процесс запустить скрипт ./go.sh в соответствующей папке плагина, он создаст плагин и развернется его на успех в Дженкинс.
Прежде чем внести переломные изменения, свяжитесь со мной. Как правило, можно внести изменения в обратном порядке.
Сценарии сборки из последнего раздела также можно начать с использованием одного из интеллектуальных строк Build and Deploy [module-name] . Эти пусковые установки создают соответствующий плагин и развертывают его в Дженкинсе.
Тесты пользовательского интерфейса могут быть запущены с использованием конфигурации запуска IntelliJ или с помощью сценария командной строки. Как уже упоминалось, все тесты пользовательского интерфейса требуются для запуска в пределах заданного предмета. В нашем случае мы используем последнюю доступную версию Jenkins LTS и предопределенный набор плагинов из нашего изображения Docker.
Тесты пользовательского интерфейса могут быть запущены с использованием соответствующих UI Tests Warnings (Firefox) или UI Warnings Tests (Chrome) . Обратите внимание, что оба запуска требуют установки соответствующих драйверов селена. Если эти драйверы не установлены в /opt/bin на вашей локальной машине, вам необходимо адаптировать конфигурации запуска, чтобы соответствовать вашей настройке.
Вы также можете запустить тесты пользовательского интерфейса, используя предоставленные Shell Scrips testFirefox.sh или testChrome.sh . Обратите внимание, что вам также может потребоваться адаптировать эти сценарии (см. Предыдущий раздел).