Pull to refresh

Непрерывная интеграция: Hudson + PHPUnit

PHP *
Существует цепочка в мозгу: мы напишем юнит тесты, затем эти тесты нам расскажут если мы что-то сломали, затем они нам почту будут отправлять о том, что проект поломался.
Это ничто иное, как иллюстрация непрерывной интеграции (Continious Integration) нычне крайне модного направления гибкой разработки. Единственный недостающий элемент цепочки — «КАК». Ниже коротенький рецепт, как бы отвечающий «очень просто».
Читать дальше →
Total votes 35: ↑32 and ↓3 +29
Views 2.5K
Comments 19

Покрытие кода для Maven проектов (code coverage)

Java *
Структура Java проектов с использованием Maven предполагает некоторое колличество Unit-тестов.
Но одних лишь тестов мало, хочется иметь более полную информацию насколько наши тесты охватывают код.

Для этих целей есть ряд библиотек из которых я использую Emma (офф. сайт).
Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Views 10K
Comments 12

Непрерывная интеграция на примере Hudson

IT systems testing *
Все мы прекрасно понимаем, что тестирование является неотъемлемой частью жизненного цикла разработки ПО. Чем чаще мы тестируем наш код, тем быстрее мы сможем обнаружить ошибку, вкравшуюся в него в ходе разработки, и быстрее её исправить. При этом стоит понимать, что тестирование крайне желательно проводить в окружении, максимально близком к боевому (ОС, ПО, Hardware, Нагрузка), что бы иметь возможность обнаружить ошибки, которые не проявляются на сервере разработки, но могут появиться в бою. Компануя два вышесказанных тезиса вместе мы получаем концепцию, называемую Continuous Integration.

Суть CI заключается в постоянной (например, после каждого commit'а) сборке и тестировании разрабатываемого ПО в максимально приближенной к боевой среде с целью как можно более раннего обнаружения ошибок и оповещения о них разработчиков. Сама идея CI принадлежит Martin Fowler, подробно описавшему её в своей статье.

Для автоматизации процесса непрерывной сборки существуют готовые решения (Hudson, CruiseControl), интеграцию одного из которых (Hudson) я и опишу в этой статье.

Читать дальше →
Total votes 40: ↑38 and ↓2 +36
Views 32K
Comments 21

Hudson => Jenkins. Oracle не сдаётся

IT systems testing *
Вот и первая жертва корпорации Oracle. Любители continuous integration сервера Hudson недавно наблюдали неприятную историю переезда Hudson c серверов управляемых Oracle'ом. Oracle так просто не сдался. Разработчики признали, что право на название «Hudson» принадлежит Oracle и, чтобы не было проблем в будущем, решили переименовать проект. Предложенное название — Jenkins
Total votes 30: ↑24 and ↓6 +18
Views 6.4K
Comments 12

Непрерывное тестирование питонопроекта

Python *
Программист зверь ленивый, поэтому всё, что будет делаться больше одного раза надо непременно заскриптовать.

Я уже некоторое время ковыряю TDD и задача постоянного контроля качества для меня становится всё актуальней. Особенно при пополнении команды новыми разработчиками.

Сначала я запускал тесты руками: save, switch, $ nosetests. Потом к тестам добавились проверялки качества кода и пришлось всё засунуть в скрипт:
pyflakes *.py
pep8 *.py
pylint *.py
nosetests


Скрипт запускать каждый раз ужасно лениво, поэтому небольшая оболочка на inotifywait стала запускать тесты и проверки после каждого сохранения:
while true; do
inotifywait -e modify project/*.py -qq; clear
./do_tests
done


Тут я стал более-менее доволен происходящим и даже на некоторое время расслабился. Но ведь программист кроме того, что ленив ещё и горд, поэтому результаты хочется кому-нибудь показать. Чтобы вести историю происходящего (которая очень помогает когда заходит начальник начальника и спрашивает: «ну-с, чем вы занимались последний месяц?») уже есть система контроля версий. Но она показывает только, что сделано и не даёт обзора успешности каждой ревизии. Получается что код лежит, но непонятно в каком он состоянии и что где ещё надо сделать.

Кроме того довольно тяжело следить за коллегами, которые тоже могут что-то сделать и забыть прогнать тесты, в результате в репозитории лежит битый код, не прошедший code review и при очередном pull может внезапно начаться clusterfuck.

И тут очень вовремя kmmbvnr@lj выпустил скринкаст, в котором он демонстрировал интеграцию тестирования для django-проектов с сабжем Jenkins (бывш. Hudson). Посмотрел я на все эти красоты, графики и отчёты и тоже захотел чтобы всё само пело и играло. Но у него django-jenkins, как и следует из названия, встраивается в джангу и генерит отчёты используя хитрую систему. Мой проект до джанги не дорос и скорее всего не дорастёт — это достаточно тривиальное WSGI-приложение, которое правда стремительно разрастается. Пришлось поднимать всё с нуля.

Воскресенье я на это убил, но в целом всё довольно прямолинейно и теперь у меня есть симпатичные отчёты:



Что внутри?
Читать дальше →
Total votes 61: ↑56 and ↓5 +51
Views 23K
Comments 20

Консольный cucumber и capybara при помощи Selenium и Hudson

IT systems testing *
Translation
В наши дни разработчики ПО не могут прожить без их любимых тестовых фреймворков. Но вот чего разрабочики не хотят — так это обеспечивать постоянный запуск этих тестов. Также, команды разработчиков не хотят тратить время на доведение результатов теста до всех.

Появляется все больше и больше полезных приложений, библиотек и плагинов, которые частично облегчают головную боль, возникающую в ходе попыток сделать тесты полезными для всей команды. Примерами прекрасных инструментов, которые есть в нашем распоряжении, могут быть Hudson для непрерывной интеграции, Cucumber для интеграционных тестов и Selenium для автоматизированного тестирования веб-приложений в реальном браузере. Но организация совместной работы всего этого требует все больше и больше настроек и конфигураций на сборочном сервере.

Наша цель — задокументировать шаги, требуемые для преодоления встречающихся препятствий на пути к запуску полного набора тестов Cucumber со сценариями на Selenium на сборочном сервере Hudson.
Читать дальше →
Total votes 20: ↑19 and ↓1 +18
Views 4.1K
Comments 8

Red Hat: Позвольте «облаку» OpenShift компилировать ваши Java-приложения

Java *Openshift *
Translation
Решил перевести новость о том, что OpenShift теперь объединяет Jenkins, JBoss Tools и Maven, позволяя Java-разработчикам программировать, собирать, развёртывать и масштабировать приложение в облаке.

Red Hat предлагает вам использовать OpenShift не только для хостинга приложений, но и для всего цикла разработки ПО. Вы можете программировать, компилировать и улучшать своё ПО прямо в «облаке», не используя для этого десктоп или мощный ноутбук.

OpenShift — PaaS-облако, о запуске которого Red Hat объявил в мае. Эта облачная платформа существует в трёх версиях — Express, Flex и Power и позиционируется, как альтернатива Microsoft Azure или Google App Engine. Главное преимущество облачных вычислений состоит в том, что они автоматически масштабируют ресурсы, настолько, насколько это требуется для текущей нагрузки.
Читать дальше →
Total votes 32: ↑27 and ↓5 +22
Views 5.1K
Comments 9

Как мы делали сборки

Website development *Java *

Введение


Когда проект разрастается, обзаводится множеством модулей и зависимостей, настройка сборки проекта вручную может занять непомерно много времени. К тому же настройкой, а значит и тратой времени, занимаются все технические участники проекта от разработчиков, тестировщиков, до администраторов.

К тому же надо постоянно обновлять разработческие и тестовые системы, да еще и ничего не перепутать. Тут не обойтись без практики непрерывной интеграции.
Читать дальше →
Total votes 12: ↑10 and ↓2 +8
Views 21K
Comments 23

Jenkins CI — вещи, которых мне не хватало

IT systems testing *
Sandbox
Доброго времени суток, %username%. Не так давно, меня попросили настроить Continuous Integration сервер, настоятельно порекомендовав использовать Jenkins\Hudson. Я, как человек несведущий в данных делах, решил изучить советы и обзоры по настройке CI систем в сети. Хочется выразить благодарность Wolonter за эту статью, она помогла мне понять общую концепцию и предоставила широчайший набор полезных плагинов. Но, как выяснилось, далеко не все, что я хотел реализовать, оказалось возможным найти в «интернетах». Для тех, кому интересны маленькие(и не очень) шалости и то, как я к ним пришел — прошу под кат.
image
Читать дальше →
Total votes 17: ↑14 and ↓3 +11
Views 25K
Comments 5

Через тернии к сборке

RealTrac Technologies corporate blog IT systems testing *
Привет, дорогие читатели. Я – разработчик в компании “RTL Service”, в которой мои обязанности по разработке продукта пересекаются с обязанностями DevOps. Конкретнее – я создаю и поддерживаю инфраструктуру сборки и первичного тестирования наших продуктов еще до их попадания в отдел тестирования.

В данной статье будет рассказано о том, какой путь у нас проходит код от пуша в хранилище системы контроля версий до формирования установочного deb пакета и размещения в наш репозиторий пакетов.
Читать дальше →
Total votes 12: ↑11 and ↓1 +10
Views 3.7K
Comments 1