Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Отчёты и графики для travis-ci и drone.io

Anna | 16.06.2014 | нет комментариев

В крупных планах теснее достаточно давным-давно привык к плюшкам ci: прогону тестов, отчётам и механическому деплою. При разработке маленьких планов этого не хватает. 1 и 3 покрывает travis-ci(ну либо drone.io), но вот визуализации итога нет никакой.

И сразу придумалось примитивное решение:

  • прогонять анализаторы на стороне ci;
  • отправлять их себе;
  • парсить итог и прекрасно отображать.

И это всё вылилось в малое приложение — coviolations.io(исходники сервера и приложения), теперь оно

  • работает с публичными и приватными репозиториями на github;
  • работает с travis-ci, drone.io и при желании с jenkins;
  • может парсить итог pep8, sloccount, python unittest, pip-review и testem;
  • может рисовать ранг-плашку ;
  • не может трудиться с репозиториями организаций.

Как подключить к плану?

Для подключения к плану нужно добавить файл .covio.yml, скажем:

violations:
  pep8: pep8 . --exclude='*migrations*'
  sloccount: sloccount .
  pip_review: pip-review
  py_unittest: cat python_tests.txt
  testem: cat testem.out

Где слева наименование анализатора, а справа команда для приобретения его итога.

Включить план в управлении планами и добавить вызов covio.
Для .travis.yml это будет:

after_script:
  - pip install coviolations_app
  - covio

А для droner.io и jenkins:

pip install coviolations_app
COVIO_TOKEN="token" covio

token дозволено получить на странице плана.

Нет парсера надобного анализатора?

Если нет надобного парсера, его легко сделать. Сам парсер это легко функция на python:

from tasks.const import STATUS_SUCCESS, STATUS_FAILED
from .base import library

@library.register('наименование анализоатора')
def parse_violation(data):
    # data['raw'] - необработанный итог анализатора
    data['preview'] = data['raw'][:10] # короткий обработанный итог
    data['prepared'] = data['raw']   '!' # полный обработанный итог
    data['status'] = STATUS_SUCCESS # либо STATUS_FAILED, если всё нехорошо
    data['plot'] = { # значения для отображения на графики
        'lines_count': len(data['raw'].split('n')),
        'random_value': 5,
    }
    return data

Доступные парсеры лежат в violations.

Что внутри?

Серверная часть написана на django, api реализовано через tastypie. Обработка итогов анализаторов происходит в пачке воркеров, сделанных с rq. Всё общение на стороне сервера происходит через redis. Данные хранятся в mongodb и postgresql. Браузерный заказчик написан на coffeescript с backbone.js. Графики рисуются при помощи chart.js. Заказчик с сервером общается по rest api и sockjs.

Как развернуть локально?

Для того Дабы развернуть локальную версию, довольно склонировать план, установить fabric и bower:

git clone https://github.com/nvbn/coviolations_web.git
pip install fabric
npm install bower

Скопировать файл настроек из coviolations_web/settings/dist.py в coviolations_web/settings/local.pyи заполнить его. В local_nvbn.py лежат мои локальные настройки, в local_production.py — настройки с продакшена.

И развернуть всё с:

fab install

Для проверки дозволено запустить тесты с:

./manage.py test violations projects tasks services app push

Для запуска необходимо исполнить(всякая команда в отдельной консоле):

./manage.py runserver
./manage.py runpush
./manage.py rqworker

Для отправки итогов из covio на локально развёрнутый инстанст нужно добавить в .covio.yml:

endpoint: http://localhost:8000/api/v1/tasks/

 

Планы

Теперь планируется добавить поддержку репозиториев организаций, проверку pull реквестов с механическим комментированием их и много-много парсеров. Ещё хочется из итогов анализаторов делать аннотации к коду, но это, скорее каждого, невозможно =)

Ссылки

 

 

 

Источник: programmingmaster.ru

Оставить комментарий
БАЗА ЗНАНИЙ
СЛУЧАЙНАЯ СТАТЬЯ
СЛУЧАЙНЫЙ БЛОГ
СЛУЧАЙНЫЙ МОД
СЛУЧАЙНЫЙ СКИН
НОВЫЕ МОДЫ
НОВЫЕ СКИНЫ
НАКОПЛЕННЫЙ ОПЫТ
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB