continuous integration with teamcity

14

Click here to load reader

Upload: andrei-ivanov

Post on 04-Jul-2015

1.859 views

Category:

Documents


4 download

DESCRIPTION

Slides for Pavel Sher's presentation "Continuous integration with TeamCity" at Sun Tech Days 2010 in St-Petersburg, Russia.

TRANSCRIPT

Page 1: Continuous integration with TeamCity

www.jetbrains.com

Continuous Integration with TeamCity

Pavel Sher

JetBrains, Inc.

Page 2: Continuous integration with TeamCity

2www.jetbrains.com

Что такое Continuous Integration?

• Практика программирования• Preconditions: хранение исходных

кодов в репозитории и автоматизация сборки проекта

• Минимальные требования к Continuous integration tool – вытаскивать исходный код и запускать сборку проекта

• Современные системы дают гораздо больше, нет смысла изобретать велосипед

Page 3: Continuous integration with TeamCity

3www.jetbrains.com

В двух словах о TeamCity

• J2EE приложение, центральный сервер с веб интерфейсом, вся информация о билдах в одном месте

• Сборки/билды запускаются на агентах – как правило отдельные машины

Page 4: Continuous integration with TeamCity

4www.jetbrains.com

Чем TeamCity отличаемся от других?

• Есть бесплатная версия• Внимание к деталям, удобство

интерфейса• Developer-oriented• Наличие ряда уникальных

возможностей• Расширяемость, с помощью плагинов

(Java API)

Page 5: Continuous integration with TeamCity

5www.jetbrains.com

Проблемы и решения

• Долгие билды• Плохой код в репозитории• Тесты никто не чинит• Качество кода деградирует

Page 6: Continuous integration with TeamCity

6www.jetbrains.com

Долгие билды

• Для многих долгие билды это объективная реальность

• Универсального решения нет, но, кое-что можно сделать:– Показать текущую стадию билда, прошедшие,

упавшие тесты– Разрезать билд на части и запускать их

параллельно (агенты)– Тестировать одновременно в разных

окружениях (опять же агенты)– Попросить сервер запускать ранее падавшие

тесты перед остальными

Page 7: Continuous integration with TeamCity

7www.jetbrains.com

Page 8: Continuous integration with TeamCity

8www.jetbrains.com

Не компилируемый код в репозитории

• Закоммитились не все файлы, локальный ребилд пересобрал не всё, не сделали апдейт перед чекином, и т.п.

• Решение – персональные билды– Опциональный автокоммит при

успешном прохождении билда– Ваши персональные билды ни на что не

влияют и никому не мешают

Page 9: Continuous integration with TeamCity

9www.jetbrains.com

Тест никто не чинит

• Тесты падают уже давно, похоже никто не собирается их чинить, непонятно в какой момент они сломались

• Решение:– First failed in, а также история коммитов

помогут установить, кто виноват– Назначьте ответственного, он получит

нотификацию прямо в IDE, остальные будут видеть, что падением теста занимаются

Page 10: Continuous integration with TeamCity

10www.jetbrains.com

Page 11: Continuous integration with TeamCity

11www.jetbrains.com

Качество кода ухудшается

• Объём кода растёт, и вы чувствуете что теряете контроль над ситуацией

• Решение: регулярные билды, собирающие метрики– Duplicate code analysis– Inspections– Coverage– Показ inspections & duplicates прямо во

время редактирования кода в IDE

Page 12: Continuous integration with TeamCity

12www.jetbrains.com

Page 13: Continuous integration with TeamCity

13www.jetbrains.com

Другие возможности:• Определение зависших билдов +

нотификации• Распознование ошибок компиляции• Трекинг новых упавших тестов (не падавших

в предыдущих билдах)• Интеграция с issue trackers• Статус коммитов – какие тесты, билды

сломались, после этого чекина• Исторические билды• Зависимости• Чекаут исходного кода билда из разных

репозиториев (в том числе разного типа)• И многое другое

Page 14: Continuous integration with TeamCity

www.jetbrains.com

Pavel Sher <[email protected]>

Спасибо!