20.11.11

Индикатор для CI сервера своими руками

Состояние с процессами разработки на моем текущем месте работы в лучшем случае можно охарактеризовать как «плачевное». К счастью один из коллег не готов с этим мириться и пытается сдвинуть все с мертвой точки, приводя в порядок код, настраивая сервер для continuous integration, и по мере своих возможностей убеждая всех и каждого, что надо что-то менять.
Я, со своей стороны, решил помочь ему, чем могу и собрал простейший индикатор состояния билда из пластиковых бутылок, мотка веревки, пластилина и проволочки Arduino, детской машинки, python'a и джаббера. Правда и тут часть кода он успел написать :)

Схема индикатора не представляет собой ничего интересного или сложного, поэтому описывать я ее не буду. Понадобятся:
  • два RGB светодиода (отсюда - там же есть и ссылка на инструкцию, как ими пользоваться)
  • 6 резисторов на 220 ом для диодов
  • Arduino, я тестировал все на обычном Duemilanove, для конечного, кхм, продукта взял Boarduino - плата как раз подошла по размеру.
  • пластмассовая машинка. У меня оказалась весьма маленькая и довольно таки фиговенькая на вид и по качеству, но поскольку целью была не красота, а функциональность, то я не сильно переживал.
Сборка конечного продукта сильно зависит от корпуса, в который вы попытаетесь запихнуть диоды и контроллер, поэтому я опять не буду описывать свое решение (на самом деле, я не изначально не планировал писать по этому поводу статью, поэтому в процессе не делал фотографий).

Весь код для разнообразия я выложил не на bitbucket, а на github.

Итак, краткое демо продукта:
Как видно, индикатор поддерживает четыре режима отображения:
  • ожидание - периодически мигаем синим
  • сборка в процессе - попеременно мигаем желтым
  • успешный билд - оба диода светятся зеленым
  • не успешный билд - менты уже выехали за виновником. 
Мы у себя используем только два последних режима.

Вся система работает примерно так - к одной из машин посредством USB подключена машинка-индикатор. Сама машинка водружена на шкаф, чтобы ее было видно всем и, в лучших традициях «сделай-сам», закреплена скотчем. На десктопе запущен python-скрипт (xmpp-bi.py), который работает xmpp-клиентом.

В качестве системы CI у нас используется Jenkins. После каждого билда он шлет оповещение на JID, который используется индикатором.

Скрипт запоминает названия всех проектов, о которых к нему приходили оповещения и отслеживает их состояние. Если сборка хотя бы одного из них закончится неудачно, машинка включит мигалки. Если все проекты собрались удачно - будет светить зелеными диодами.

На данный момент этот примитивный индикатор нас устраивает. Хотя бы даже потому, что еще недавно у нас и такого не было :)

В будущем хочется улучшить и заменить индикатор на что-нибудь типа такого или такого. Ну и добавить аудио-индикацию.





Немає коментарів:

Дописати коментар