Статьи

Grails & Hudson / Jenkins: мониторинг состояния сборки

Есть несколько способов контролировать ход сборки 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. Автоматическое развертывание военных файлов.