Pull to refresh

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

coviolations.io corporate blog IT systems testing *Python *

Всегда приятно иметь статистику о состоянии технической части (кода) проекта, этим занимается 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$+ в месяц
Tags:
Hubs:
Total votes 10: ↑9 and ↓1 +8
Views 5.7K
Comments Comments 4

Information

Founded
Location
Россия
Website
coviolations.io
Employees
1 employee (me only)
Registered