Есть несколько способов контролировать ход сборки Grails: с помощью веб-приложения Hudson / Jenkins; или используя API: из вашей IDE, сделанных на заказ клиентов API или даже из вашего клиента мониторинга предприятия. Здесь мы рассмотрим их все и создадим простую библиотеку тегов Grails для отображения статуса сборки на панели «Состояние приложения».
Это 5-й выпуск серии, но первый с момента анонса нового проекта имени Дженкинса (см. Пост Kohsuke здесь ).
Примечание . Конкретный экземпляр Hudson, который я буду использовать для этого поста, был создан с одной работой для моей презентации в лондонском GGUG и имеет плагин Green Balls .
Плагины Hudson / Jenkins View
Есть несколько плагинов, которые предоставляют «информационные радиаторы», которые делают очень полезные настенные дисплеи для гибких команд.
например,
вид радиатора
Плагины IDE
Для разработчиков возможность видеть состояние сборки в IDE может быть очень полезной (например, при принятии решения о проверке ревизии HEAD в большом проекте). Для пользователей Eclipse / STS они могут установить плагин hudson-eclipse с сайта обновлений .
Конфигурация («Окно»> «Установки»> «Hudson») довольно проста, в данном случае это просто URL-адрес, но есть возможность установить учетные данные, интервал опроса и т. Д.
Плагин добавляет значок состояния сборки в строку состояния, а также есть следующий вид (вы также можете запускать сборки, если у вас есть необходимые разрешения):
API Hudson / Jenkins Jobs.
Это основа для следующих примеров — в первую очередь мы рассмотрим успокоительные методы GET, которые возвращают данные JSON.
Если вы получите «http: // localhost: 8081 / api / json» (при необходимости заменяя имя хоста и порт), ответ JSON включает список заданий, например:
"jobs":[{"name":"GGUG_trunk","url":"http://localhost:8081/job/GGUG_trunk/","color":"blue"}],
Обратите внимание, что «синий» цвет означает успешную сборку — даже если у вас установлен плагин «Зеленые шары».
Если вы получите «http: // localhost: 8081 / job / GGUG_trunk / api / json» (при необходимости заменяя имя хоста, порт и имя задания), ответ JSON включает в себя:
"displayName":"GGUG_trunk", "name":"GGUG_trunk", "color":"blue", "lastBuild":{"number":33,"url":"http://localhost:8081/job/GGUG_trunk/33/"},
API имеет встроенную документацию, см., Например, http: // localhost: 8081 / api /? и http: // localhost: 8081 / job / GGUG_trunk / api /?
Сценарии Groovy
Теперь у нас есть краткое введение в API, давайте рассмотрим два простых случая сценария Groovy: состояние всех заданий и дополнительную информацию о конкретном задании.
Для простоты мы будем использовать метод getText () Groovy helper на java.net.URL — если вам потребуется аутентификация, я бы рекомендовал вместо этого использовать HTTP-клиент Apache Commons.
Использование API верхнего уровня:
Дает вывод: GGUG_trunk — синий
Мы получаем вывод: GGUG_trunk # 33 — синий
Taglib Grails
Основываясь на том, что мы только что достигли (но заменив json.simple вспомогательными классами Grails), мы можем отобразить эту информацию в нашем приложении Grails (снова см. Предостережение об аутентификации).
Теперь это можно включить в grails-app / views / index.gsp,
например
<h1>Application Status</h1> <ul> <li>App version: <g:meta name="app.version"></g:meta></li> <li>Latest CI build: <g:buildInfo server="http://localhost:8081" job="GGUG_trunk"/></li> <li>Grails version: <g:meta name="app.grails.version"></g:meta></li>
И в действии:
Инструменты мониторинга
Вы также можете включить статус сборки своего приложения в мониторинг своего предприятия, чтобы иметь возможность просматривать весь процесс, т. Е. В режиме реального времени, в стадии подготовки, тестирования и разработки.
У Opsview есть служебная проверка, которую я внес, чтобы разрешить мониторинг заданий Hudson / Jenkins как часть централизованного мониторинга предприятия. Команда Opsview использует это для мониторинга своих собственных заданий, которые проверяют модули регистрации Opsview.
check_hudson_job — это Perl-скрипт, использующий API-интерфейс задания JSON, необходимыми аргументами проверки сервиса являются URL, имя задания, имя пользователя, пароль.
Вывод предоставляется в стандартном формате плагина Nagios, но неизвестный код состояния возвращается, если сборка выполняется (например, цвет содержит «мигание»).
На этом мы заканчиваем серию публикаций Grails & Hudson (Jenkins) — надеюсь, вы нашли это полезным, поскольку мы рассмотрели достаточно, чтобы ваши проекты Grails были полностью автоматизированы:
Часть 1. Интеграция с CodeNarc.
Часть 2. Возвращение к основам с настройкой Hudson / Jenkins для Grails.
Часть 3. Автоматическое тестирование сборки Grails.
Часть 4. Автоматическое развертывание военных файлов.