Continuous integration
и Django
Илья Барышев
Moscow Django Meetup #4
Slide 2
Slide 2 text
What is CI?
A software development practice where
members of a team integrate their work
frequently, usually each person integrates at
least daily - leading to multiple integrations
per day. Each integration is verified by an
automated build (including test) to detect
integration errors as quickly as possible.
Martin Fowler
Slide 3
Slide 3 text
Зачем нужен CI
• сокращается время интеграции
• защита от регрессий
• всегда работающая копия проекта
• качественная оценка кода (lint)
Slide 4
Slide 4 text
• Free, MIT Licence
• java -‐jar jenkins.war
• WebGUI
• Богатый функционал out of the box
• Более 400 плагинов
Slide 5
Slide 5 text
Jenkins dashboard
http://ci.django-cms.org/
Slide 6
Slide 6 text
django-jenkins
• простая установка и настройка
• тестируем только свои приложения
• поддержка анализаторов кода:
• coverage
• pylint, pep8, pyflakes
• csslint, jslint и др.
Тесты django
$ python manage.py test
Creating test database for alias 'default'...
....................................................................
....................................................................
....................................................................
....................................................................
....................................................................
...s................................................................
........
-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐
-‐-‐
Ran 416 tests in 16.872s
OK (skipped=1)
Destroying test database for alias 'default'...
Тесты django-jenkins
$ python manage.py jenkins
Creating test database for alias 'default'...
.
-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐
Ran 1 test in 0.004s
OK
Destroying test database for alias 'default'...
Slide 11
Slide 11 text
Ставим Jenkins и плагины
Устанавливаем плагины
Violations и Cobertura для Jenkins
$ wget http://mirrors.jenkins-‐ci.org/war/latest/
jenkins.war
$ java -‐jar jenkins.war
Slide 12
Slide 12 text
Создание job
Настраиваем сборку
Slide 13
Slide 13 text
Запускаем тесты
Slide 14
Slide 14 text
Запускаем тесты
Slide 15
Slide 15 text
Послесборочные операции
Slide 16
Slide 16 text
Так не бывает
Slide 17
Slide 17 text
Так бывает
Покрытие
Количество тестов
Slide 18
Slide 18 text
Shining Panda plug-in
• поддержка python, virtualenv, buildout, tox
при настройке заданий
Slide 19
Slide 19 text
Shining Panda plug-in
• ось Python для многомерных
конфигураций
Slide 20
Slide 20 text
Shining Panda
• Jenkins SaaS
• Python, Java
• Linux, Windows
• MySQL, PostgreSQL, MongoDB
• 12$ в месяц (48c в час)
• https://www.shiningpanda.com/
Slide 21
Slide 21 text
Travis CI
• CI SaaS
• Free for opensource
• Python, Javascript, Ruby, etc (11 языков)
• Интеграция с гитхабом
• Тестирование pull-реквестов (beta)
• http://travis-ci.org/