...

четверг, 5 декабря 2013 г.

Облачные ci: tavis-ci и drone.io



Всегда приятно иметь статистику о состоянии технической части (кода) проекта, этим занимается coviolations.io. Но для его использования нужно какое-то ci-решение. Не каждому захочется поднимать jenkins/travis/etc на своём сервере, а будет проще прибегнуть к использованию облачных сервисов. Мы рассмотрим два наиболее популярных: travis-ci и drone.io.

Как «жертву» будем использовать обычный django проект — сам coviolations. Для проектов на ror/nodejs/flask/etc всё будет почти аналогично. Как результат мы получим пачку статистики и графиков.



Подготовка




Мы хотим проверять PEP8, свежесть пакетов, тесты и покрытие. Для этого создадим в корне проекта .covio.yml:

violations:
pep8: pep8 . --exclude='*migrations*,*settings*,*components*,*docs*'
sloccount: sloccount .
py_unittest:
command: coverage run manage.py test violations projects tasks services coviolations_web push
stderr: true
coverage: coverage report
pip_review:
command: pip-review
nofail: true




Все проверки будут запускаться автоматически при вызове covio.

travis-ci




Задание описывается в .travis.yml, по его содержимому есть хорошая документация. Для нашего проекта он будет содержать:

language: python
python:
- "2.7"
services:
- mongodb
- redis-server
before_install:
- sudo apt-get update -qq
- sudo apt-get install -qq sloccount
install:
- pip install -r requirements/ci.txt
- cp coviolations_web/settings/local_ci.py coviolations_web/settings/local.py
- ./manage.py syncdb
- ./manage.py migrate
script:
- covio




Для открытых проектов сервис предоставляется бесплатно, для закрытых — 129$+ в месяц.

Из плюшек сервис предоставляет:


  • плашки со статусом: ;

  • работа с pull request'ами;

  • проставление статуса сломан/работает коммитам;

  • rest api для сторонних сервисов (благодаря этому не надо вручную передавать COVIO_TOKEN).




drone.io




В drone.io задание нужно описывать на странице проекта в самом сервисе. Для coviolations нужно будет поставить галочки напротив баз MongoDB и Redis, прописать токен в Environment Variables:

COVIO_TOKEN='17c0f6b3-habr-4d9c-not3-token5af9fe'




И в секции Commands описать задание как простой скрипт:

sudo apt-get update -qq
sudo apt-get install -qq sloccount
pip install -r requirements/ci.txt
cp coviolations_web/settings/local_ci.py coviolations_web/settings/local.py
./manage.py syncdb
./manage.py migrate
covio




Для открытых проектов сервис бесплатен, для закрытых — 25$+ в месяц.

Из дополнительных удобств сервис предоставляет:


  • плашка со статусом: ;

  • возможность в случае успешного завершения деплоить в Heroku, AppEngine, dotColud и на свой сервере по ssh;

  • сохранение артефактов.




Результат






































travis-cidrone-io
Поддержка pull request'овДаНет
Возможность деплояНетДа
Проставление статуса коммитамДаНет
Сохранение артефактовНетДа
Api для сторонних сервисовДаНет
Цена129$+ в месяц 25$+ в месяц

This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.


Комментариев нет:

Отправить комментарий