
Всегда приятно иметь статистику о состоянии технической части (кода) проекта, этим занимается 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-ci | drone-io | |
|---|---|---|
| Поддержка pull request’ов | Да | Нет |
| Возможность деплоя | Нет | Да |
| Проставление статуса коммитам | Да | Нет |
| Сохранение артефактов | Нет | Да |
| Api для сторонних сервисов | Да | Нет |
| Цена | 129$+ в месяц | 25$+ в месяц |
ссылка на оригинал статьи http://habrahabr.ru/company/coviolations/blog/204900/
Добавить комментарий