SlideShare a Scribd company logo
Continuous Integration
29/10/2011
ITEvent




Continuous Integration

        Анатолій Охотніков
        Softjourn Inc.
Про що буде йти мова
• Що таке continuous integration (CI)?
• Побудова фічі з CI
• Практики та Переваги
• Впровадження
• Інструменти
• Приклади проектів -
  Java, PHP, Android
• Висновки
Що таке continuous integration (CI)
                                             • Continuous Integration
                                               (неперервна інтеграція)
                                               це практика розробки
                                               пз, у якій члени
                                               команди часто
                                               інтегруть свої наробки;
                                               звично кожен інтегрує
                                               принаймі щоденно, що
                                               призводить до багатьох
                                               інтеграцій на день.


Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Що таке continuous integration (CI)
• Кожна інтеграція
   перевіряєтья автоматичною
   побудовою (включно з
   тестами) щоб виявити
   помилки інтегрування
   якнайшвидше.
 ●
   Багато команд виявили що
   цей підхід веде до значно
   меньших проблем
   інтеграції та дозволяє
   команді розробляти
   пов'язане ПЗ більш швидко.
 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Що таке continuous integration (CI)
  • “Це не може працювати (тут)”
  • “Використання цього не дає відчутної різниці”
  • “Так, ми використовуємо це – як ви можете без
     цього жити?”
     ●
       Термін “Continuous Integration” походить з
       процесу розробки у XP, як однієї з основних
       12 практик. Звичайно CI не вимагає певного
       інструменту, але дуже зручно
       використовувати спеціальний сервер.
●
   Інтеграція це вид процесу "заплати мені зараз або
   потім більше".

 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Просто зробіть це...
Побудова фічі з CI
• Давайте зробимо       •                             Оновимо робочу копію із
  невеличку частину ПЗ,                               змінами інших, побудуємо
  якусь маленьку за                                   та перевіримо конфлікти.
  пару годин.           •                             Це ваша відповідальність
• Візьмемо копію                                      створити успішний білд.
  поточних інтегрованих •                             Збережіть ваші зміни.
  вихідних кодів        •                             Збудуйте на машині
• Поміняємо код та                                    інтеграції.
  додамо або змінемо •                                Виправте білд швидко.
                        •                             Загальна стабільна
  автоматизовані тести.
                                                      база, меньше помилок,
• Збудуємо код та
                                                      помилки виявляються
  запустимо
                                                      швидше.
  автоматичні тести.
 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Побудова фічі у циклі CI
                                   Слідкуйте
                                   За кодом

Публікуйте                                                  Будуйте
Результати                                                  Продукт

                                    Виконуйте
                                      Тести

Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Практики CI
• Утримуйте єдиний                                     • Тримайте побудову
  репозиторій вихідного                                  швидкою.
  коду.                                                • Тестуйте у
• Автоматизуйте побудову.                                виробничому клоні.
• Побудова з автоматичним                              • Останній збудований
  тестуванням.                                           код легко доступний
• Кожен зберігає роботу                                  для усіх членів
  у основу гілку кожного                                 команди.
  дня.                                                 • Всі мають бачити що
• Кожне збереження має                                   відбувається.
  будувати головну гілку на                            • Автоматизуйте
  інтеграційній машині.                                  впровадження.


 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Утримуйте єдиний репозиторій вихідного коду
• Проекти розробки ПЗ містять багато файлів, що
  мають бути організовані разом для побудови продукту.
• Інструменти для управління цим називають
  інстуремнтами управління вихідного коду (Source
  Code Management tools – SCM), управління
  конфігурацією, системи контролю версій, репозиторії.
• Все що потрібно для побудови має бути там, включно
  з: тестовими скриптами, файлами властивостей,
  схемою бази даних, скриптами інсталяції, сторонніми
  бібліотеками.
        • Тримайте використання гілок мінімально необхідним.
        • В основному, вам потрібно зберігати все
          що потрібно для побудови,
          виключаючи результати побудови.

  Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Автоматизуйте побудову
• Автоматизована побудова є звичайною
  можливістю автоматизованих систем (Make,
  Ant, NAnt, MSBuild, і т.п.).
• Загальною помилкою є не включення всього
  необхідного у автоматизовану побудову
  (чиста машина має запускатись у роботу
  швидко!).
     • Інкрементальні побудови,
       компонентні побудови, цілі.
• Скрипти! Не залежте сильно від IDE.

 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Автоматизуйте побудову

• Ford 1913




• T700 2018


 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Робіть побудову з автоматичним тестуванням
• Гарним шляхом виявлення помилок швидше та
  ефективніше є включення автоматичного
  тестування у процес побудови проекту.
• CI має слабшу вимогу до коду, що само-
  тестується ніж TDD (Test-Driven Development).
• Для само-тестування коду вам потрібен набір
  автоматичних тестів, які можуть перевірити
  велику частину кодової бази на помилки.
          • Схід TDD популяризував сім'ю XUnit.
          • Інструменти, що фокусуються на повному тестуванні,
            як FIT, Selenium, Sahi, Watir, і т.п.
          • Не розраховуйте, що тести виявлять
            всі проблеми з кодом.

 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Піраміда тестування




Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Кожен зберігає роботу у основну гілку кожного дня
• Інтеграція це в основному комунікація.
• Перед комітом успішна побудова робочої копії.
• Для швидкого вирішення проблем – спочатку їх
   треба швидко виявити.
• Факт побудови при оновленні власної робочої копії
   означає що ви виявляєте конфлітки побудови і
   текстові конфлікти.
• Через те що між комітами лише кілька годин, існує
   обмежена кількість місць, де може ховатися
   проблема. Ви навіть можете використати diff-
   debugging.
• Часті коміти стимулюють розробників ділити свою
   роботу у маленьки блоки по декілька годин. Це
   допомагає відслідкувати прогрес та надає відчуття
   поступу.
  Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Кожне збереження має будувати головну
 гілку на інтеграційній машині
• Люди, що не оновлюються і не будують перед
  комітом, різниці у середовищах розробників та інші
  проблеми – не дають головній гілці бути здоровою.
• Коміт ввжається успішним, коли інтеграційна
  побудова успішна – відповідальність розробника.
• Використовуйте ручну побудову або CI сервер.
• Не виконуйте побудови просто за час. графіком.
• Якщо побудова основної гілки неуспішна, це має
  бути виправлено негайно. Ви завжди розробляєте
  на відомо стабільній базі.
• Не погано зламати основну гілку. Швидко
  виправляйте!
• Терпіння та постійне застосування – виробляйте
  регулярну звичку робочої основної гілки.
 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Тримайте побудову швидкою
• Для більшості проектів XP рекомендація
  тримати побудову не довше 10 хвилин цілком
  прийнятна.
• Швидкість.




 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Тримайте побудову швидкою
• Починайте роботу над встановленням
  стадійної побудови.
• Труба(черга) побудови – багато послідовних
  побудов.
• Швидкий білд коміту, це білд що потрібен
  коли хтось зберіг свій код у основну гілку.
• Вторинний білд що виконується при змозі –
  наприклад для тестів що містять зовнішні
  сервіси такі як бази даних і т.п.
Тестуйте у клоні виробничого середовища
• Метою тестування є виявлення у
  контрольованому середовищі будь-якої
  проблеми що система буде мати у
  виробництві.
• Ви маєте налаштувати тестове середовище
  максимально наближеним до виробничого.




 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Тестуйте у клоні виробничого середовища

• Часто використовують штучне середовище
  для швидкокого тестування комітів та
  вторинне тестування у клоні виробничого
  середовиша.

• Використовуйте віртуалізацію.




 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Робіть останній збудований код легко доступним
• Людям набагато легше подивитись на те
  що зроблено не так і сказати як треба
  виправити, ніж уявити або пояснити.




 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Робіть останній збудований код легко доступним
• Всі хто залучений до проекту мають
  легко отримати останній варіант
  збудованого коду та запустити його: для
  демонстрацій, тестування або щоб
  подивитись що змінилося.

• Всім відоме місце де можна отримати
  останній збудований продукт. Продукт
  має принаймі проходити коміт тести
  (бути достатньо стабільним).

 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Всі мають бачити що відбувається
• CI в основному це
  комунікація, так що
  вам потрібно
  упевнитись, що всі
  можуть легко бачити
  стан системи та
  зроблені в ній зміни.

• Монітори у
  системному лотці,
  ліхтарі, лампи з
  лавою, іграшкові
  ракетниці і т.п.
  Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Всі мають бачити що відбувається
• Використовуйте
  інструмент з
  вебсайтом у якості
  інформаційної панелі,
  звітності та розширеної
  інформації.

• Настінний календар
  для команди QA з
  червоними та
  зеленими наліпками,
  що вказують на здорові
  та зламані білди.
  Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Автоматизуйте впровадження
    ●   Для CI вам потрібні різні середовища
         Розробка                        Тестування                Демо



                                         Другорядне
                                                                Виробництво
                                         Тестування

•       Автоматизуйте переміщення продукту.
•       Передбачте відкат з виробництва.
•       Поступове(rolling) впровадження у кластерах.
•       Випробувальні версії деяким користувачам.


    Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Переваги CI
• У будь-який час ви знаєте де ви є, що
  працює, що не працює, критичні помилки які
  є в системі.
• CI не звільняє від помилок, але дозволяє їх
  виявляти значно легше.
• Помилки мають кумулятивний характер.
  Чим більше помилок у вас є, тим складніше
  виправити одну. Синдром зламаних вікон.
• При використанні CI, у вас зникає одна з
  найбільших перешкод для частого
  впровадження – між клієнтами та
  розробкою.
 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Впровадження
• Автоматизуте побудову. Будуйте всю
  систему єдиною командою.
  Будуйте при потребі.
• Додайте автоматизоване тестування у
  вашу побудову. Визначіть основні
  частини. Почніть робити.
• Спробуйте прискорити побудову.
  Чарівні 10 хвилин.
• Почніть CI від самого початку проекту.
• Шукайте допомогу.
 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Інструменти
• Jenkins(Oracle Hudson) – написаний на Java,
  ліцензовний під MIT, працює у контейнері
  сервлетів, підтримує CVS, Subversion, Mercurial,
  Git, StarTeam Clearcase, Ant, NAnt, Maven та
  shell скрипти.
• CruiseControl – оснований на Java фреймворк
  для процесу неперервної побудови.
• CruiseControl.NET – оснований на .NET
  автоматизований сервер інтеграції.
• Apache Continuum – сервер неперервної
  інтеграції з підтримкою Apache Maven та
  Apache Ant. Підтримує CVS, Subversion,
  shell скрипти і т.п.
 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Інструменти
• Дослідження університету Fontys
  (США, ЄС, Австралія) 2009 рік:




 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Jenkins (Oracle Hudson)
•     Легке встановлення
•     Легка конфігурація
•     Підтримка наборів змін
•     Постійні посилання
•     Інтеграція з RSS/E-mail/IM
•     Після-фактичні мітки
•     Звітування JUnit/TestNG
•     Розподілені побудови
•     “Відбитки” фалів
•     Підтримка плагінів
    Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Приклад Java проекту
•     Автоматичний моніторинг SCM
•     Побудова проекту
•     Автоматичне тестування
•     Статичний аналіз коду
•     Публікація артифактів
•     Автоматичне впровадження
•     Інструменти: Ant, Maven, JUnit, PMD,
      FindBugs


    Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Приклад Java проекту: Job
Приклад Java проекту: Build
Приклад Java проекту: JUnit
Приклад Java проекту: FindBugs
Приклад Java проекту: PMD
Приклад PHP проекту
•     Автоматичний моніторинг SCM
•     Автоматичне тестування
•     Статичний аналіз коду
•     Публікація артифактів
•     Автоматичне впровадження
•     Інструменти: Ant, phpUnit, pDepend,
      phpMD, phpCPD, phpLOC, phpCS,
      phpDOC, phpCB


    Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Приклад PHP проекту: Charts




Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Приклад Android проекту
•     Автоматичний моніторинг SCM
•     Побудова проекту
•     Автоматичне тестування
•     Статичний аналіз коду
•     Публікація артифактів
•     Інструменти: Ant, JUnit (custom XML
      logger), PMD, FindBugs, Android SDK,
      Android Emulator (headless/Xvfb), ADB


    Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Приклад Android проекту: Job




Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Висновки
• Continuous Integration стала однією
  з основних технік у розробці
  програмного забезпечення.
• Багато команд виявили що користь
  застосування CI значно переважає
  недоліки.
• Ефект від раннього виявлення та
  виправлення помилок інтеграції
  зберігає час та гроші упродовж
  життєвого циклу проекту.
 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Висновки: плюси та мінуси
•     Коли unit тести не спрацьовують або виникає     •         Потрібен початковий
      помилка, розробники можуть повернути код у                час на налаштування.
      попередній стан без помилок, без потреби витрачати
                                                      •         Детально
      час на пошук помилок.                                     розроблений набір
•     Розробники виявляють і виправляють проблеми               тестів потрібен для
      інтеграції постіно – запобігаючи хаосу останніх           отримання переваг
      хвилин перед релізом.                                     від автоматичного
•     Раннє попередження про зламаний/несумісний код.           тестування.
•     Раннє попередження про конфліктуючі зміни.      •         Широко-масштабний
•     Миттєве unit тестування усіх хмін.                        рефакторинг може
•     Постійна доступність “поточної” зборки для                бути проблематичним
      тестування, демонстрації або релізу.                      через постійно змінну
•     Миттєвий зворотній зв'язок з розробниками про             кодову базу.
      якість, функціонал або системний вплив коду що •          Витрати на залізо для
      вони пишуть.                                              машин побудови
•     Часті збереження коду штовхають розробників               можуть бути
      створювати модульний та меньш складний код.               високими.
•     Метрики що генеруються з автоматичного тестування
      та CI фокусують розробників на впровадженні
      функціонального, якісного коду і допомагають
      розвинути момент у команді.
    Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Посилання
●    http://en.wikipedia.org/wiki/Continuous_integration
●    http://www.martinfowler.com/articles/continuousIntegration.html
●    http://www.extremeprogramming.org/rules/integrateoften.html
●    http://cruisecontrol.sourceforge.net/overview.html
●    http://wiki.hudson-ci.org/display/HUDSON/Use+Hudson
●    http://continuum.apache.org/
●    http://www.wakaleo.com/books/continuous-integration-with-hudson-the-book
●    http://www.developer.com/open/article.php/3803646/The-Best-Continuous-Integ
●    http://jamesshore.com/Blog/Continuous-Integration-is-an-Attitude.html
●    http://jan.krutisch.de/en/2010/01/13/the-hudson-siren-small-pieces-loosely-joine



    Copyright © 2000-2011 Softjourn, Inc. All rights reserved
Питання та обговорення
  “Анатолій Охотніков”
  <aokhotnikov@softjourn.com>




Copyright © 2000-2011 Softjourn, Inc. All rights reserved

More Related Content

PDF
PDF
Jenkins CI (ukr)
PDF
iPhone Objective-C Development (ukr) (2009)
PDF
Debug (ukr)
PDF
Php web app security (eng)
PDF
Web application security (eng)
PDF
Php unit (eng)
PDF
Ubuntu server wireless access point (eng)
Jenkins CI (ukr)
iPhone Objective-C Development (ukr) (2009)
Debug (ukr)
Php web app security (eng)
Web application security (eng)
Php unit (eng)
Ubuntu server wireless access point (eng)

Viewers also liked (9)

PDF
Xdebug (ukr)
PDF
Continuous integration (eng)
PDF
ITEvent: Kanban Intro (ukr)
PDF
Db design (ukr)
PDF
Linux introduction (eng)
PDF
Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)
PDF
Agile Feedback Loops (ukr)
PDF
Ldap introduction (eng)
PDF
Agile (IF PM Group) v2
Xdebug (ukr)
Continuous integration (eng)
ITEvent: Kanban Intro (ukr)
Db design (ukr)
Linux introduction (eng)
Project Management: Burn-Down Chart / OrangeHRM Project MOD (eng)
Agile Feedback Loops (ukr)
Ldap introduction (eng)
Agile (IF PM Group) v2
Ad

Similar to ITEvent: Continuous Integration (ukr) (20)

PDF
Continious integration jet brains teamcity. Віталій Галушка
PPT
AngularJS on Javascript User Group, Lviv
PPTX
Automation as a Way to Do Routine Work Quickly and Effortlessly
PPTX
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
PPTX
Stfalcon QA Meetup 31.01.2020
PPTX
природна і економна дорожня карта для переходу команди розробки на тест центр...
PPT
Caliburn Micro Overview
PDF
Іван Дзямулич “AppStore – як стартанути і розвиватись?”
PDF
"Elements of functional programming in C# based on Language-Ext library as an...
PDF
Штучний інтелект - 6 грудня - презентація.pdf
PPTX
#0 Вступна лекція
PDF
DrupalTour. Khmelnytskyi — Ember (Timur Bolotyuh, stfalcon.com)
PDF
Ember.js. Init...
PDF
Павло Юрійчук — Перехід на Angular.js. Howto
PDF
Global logic tech talk switching to Angular.js
PPTX
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»
PPTX
ОЛЕГ ЗАРЕВИЧ «How did we improve delivery using tests» Lviv QA Day 2019
PDF
Igor Dumbur: Інженерна досконалість та DevOps (UA)
PPTX
Чим простіше - тим краще, Стас Хорунжий
PPTX
МИКОЛА СОЛОПІЙ «Моя формула успішної імплементації Тестової Тули на проекті» ...
Continious integration jet brains teamcity. Віталій Галушка
AngularJS on Javascript User Group, Lviv
Automation as a Way to Do Routine Work Quickly and Effortlessly
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
Stfalcon QA Meetup 31.01.2020
природна і економна дорожня карта для переходу команди розробки на тест центр...
Caliburn Micro Overview
Іван Дзямулич “AppStore – як стартанути і розвиватись?”
"Elements of functional programming in C# based on Language-Ext library as an...
Штучний інтелект - 6 грудня - презентація.pdf
#0 Вступна лекція
DrupalTour. Khmelnytskyi — Ember (Timur Bolotyuh, stfalcon.com)
Ember.js. Init...
Павло Юрійчук — Перехід на Angular.js. Howto
Global logic tech talk switching to Angular.js
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»
ОЛЕГ ЗАРЕВИЧ «How did we improve delivery using tests» Lviv QA Day 2019
Igor Dumbur: Інженерна досконалість та DevOps (UA)
Чим простіше - тим краще, Стас Хорунжий
МИКОЛА СОЛОПІЙ «Моя формула успішної імплементації Тестової Тули на проекті» ...
Ad

ITEvent: Continuous Integration (ukr)

  • 2. ITEvent Continuous Integration Анатолій Охотніков Softjourn Inc.
  • 3. Про що буде йти мова • Що таке continuous integration (CI)? • Побудова фічі з CI • Практики та Переваги • Впровадження • Інструменти • Приклади проектів - Java, PHP, Android • Висновки
  • 4. Що таке continuous integration (CI) • Continuous Integration (неперервна інтеграція) це практика розробки пз, у якій члени команди часто інтегруть свої наробки; звично кожен інтегрує принаймі щоденно, що призводить до багатьох інтеграцій на день. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 5. Що таке continuous integration (CI) • Кожна інтеграція перевіряєтья автоматичною побудовою (включно з тестами) щоб виявити помилки інтегрування якнайшвидше. ● Багато команд виявили що цей підхід веде до значно меньших проблем інтеграції та дозволяє команді розробляти пов'язане ПЗ більш швидко. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 6. Що таке continuous integration (CI) • “Це не може працювати (тут)” • “Використання цього не дає відчутної різниці” • “Так, ми використовуємо це – як ви можете без цього жити?” ● Термін “Continuous Integration” походить з процесу розробки у XP, як однієї з основних 12 практик. Звичайно CI не вимагає певного інструменту, але дуже зручно використовувати спеціальний сервер. ● Інтеграція це вид процесу "заплати мені зараз або потім більше". Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 8. Побудова фічі з CI • Давайте зробимо • Оновимо робочу копію із невеличку частину ПЗ, змінами інших, побудуємо якусь маленьку за та перевіримо конфлікти. пару годин. • Це ваша відповідальність • Візьмемо копію створити успішний білд. поточних інтегрованих • Збережіть ваші зміни. вихідних кодів • Збудуйте на машині • Поміняємо код та інтеграції. додамо або змінемо • Виправте білд швидко. • Загальна стабільна автоматизовані тести. база, меньше помилок, • Збудуємо код та помилки виявляються запустимо швидше. автоматичні тести. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 9. Побудова фічі у циклі CI Слідкуйте За кодом Публікуйте Будуйте Результати Продукт Виконуйте Тести Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 10. Практики CI • Утримуйте єдиний • Тримайте побудову репозиторій вихідного швидкою. коду. • Тестуйте у • Автоматизуйте побудову. виробничому клоні. • Побудова з автоматичним • Останній збудований тестуванням. код легко доступний • Кожен зберігає роботу для усіх членів у основу гілку кожного команди. дня. • Всі мають бачити що • Кожне збереження має відбувається. будувати головну гілку на • Автоматизуйте інтеграційній машині. впровадження. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 11. Утримуйте єдиний репозиторій вихідного коду • Проекти розробки ПЗ містять багато файлів, що мають бути організовані разом для побудови продукту. • Інструменти для управління цим називають інстуремнтами управління вихідного коду (Source Code Management tools – SCM), управління конфігурацією, системи контролю версій, репозиторії. • Все що потрібно для побудови має бути там, включно з: тестовими скриптами, файлами властивостей, схемою бази даних, скриптами інсталяції, сторонніми бібліотеками. • Тримайте використання гілок мінімально необхідним. • В основному, вам потрібно зберігати все що потрібно для побудови, виключаючи результати побудови. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 12. Автоматизуйте побудову • Автоматизована побудова є звичайною можливістю автоматизованих систем (Make, Ant, NAnt, MSBuild, і т.п.). • Загальною помилкою є не включення всього необхідного у автоматизовану побудову (чиста машина має запускатись у роботу швидко!). • Інкрементальні побудови, компонентні побудови, цілі. • Скрипти! Не залежте сильно від IDE. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 13. Автоматизуйте побудову • Ford 1913 • T700 2018 Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 14. Робіть побудову з автоматичним тестуванням • Гарним шляхом виявлення помилок швидше та ефективніше є включення автоматичного тестування у процес побудови проекту. • CI має слабшу вимогу до коду, що само- тестується ніж TDD (Test-Driven Development). • Для само-тестування коду вам потрібен набір автоматичних тестів, які можуть перевірити велику частину кодової бази на помилки. • Схід TDD популяризував сім'ю XUnit. • Інструменти, що фокусуються на повному тестуванні, як FIT, Selenium, Sahi, Watir, і т.п. • Не розраховуйте, що тести виявлять всі проблеми з кодом. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 15. Піраміда тестування Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 16. Кожен зберігає роботу у основну гілку кожного дня • Інтеграція це в основному комунікація. • Перед комітом успішна побудова робочої копії. • Для швидкого вирішення проблем – спочатку їх треба швидко виявити. • Факт побудови при оновленні власної робочої копії означає що ви виявляєте конфлітки побудови і текстові конфлікти. • Через те що між комітами лише кілька годин, існує обмежена кількість місць, де може ховатися проблема. Ви навіть можете використати diff- debugging. • Часті коміти стимулюють розробників ділити свою роботу у маленьки блоки по декілька годин. Це допомагає відслідкувати прогрес та надає відчуття поступу. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 17. Кожне збереження має будувати головну гілку на інтеграційній машині • Люди, що не оновлюються і не будують перед комітом, різниці у середовищах розробників та інші проблеми – не дають головній гілці бути здоровою. • Коміт ввжається успішним, коли інтеграційна побудова успішна – відповідальність розробника. • Використовуйте ручну побудову або CI сервер. • Не виконуйте побудови просто за час. графіком. • Якщо побудова основної гілки неуспішна, це має бути виправлено негайно. Ви завжди розробляєте на відомо стабільній базі. • Не погано зламати основну гілку. Швидко виправляйте! • Терпіння та постійне застосування – виробляйте регулярну звичку робочої основної гілки. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 18. Тримайте побудову швидкою • Для більшості проектів XP рекомендація тримати побудову не довше 10 хвилин цілком прийнятна. • Швидкість. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 19. Тримайте побудову швидкою • Починайте роботу над встановленням стадійної побудови. • Труба(черга) побудови – багато послідовних побудов. • Швидкий білд коміту, це білд що потрібен коли хтось зберіг свій код у основну гілку. • Вторинний білд що виконується при змозі – наприклад для тестів що містять зовнішні сервіси такі як бази даних і т.п.
  • 20. Тестуйте у клоні виробничого середовища • Метою тестування є виявлення у контрольованому середовищі будь-якої проблеми що система буде мати у виробництві. • Ви маєте налаштувати тестове середовище максимально наближеним до виробничого. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 21. Тестуйте у клоні виробничого середовища • Часто використовують штучне середовище для швидкокого тестування комітів та вторинне тестування у клоні виробничого середовиша. • Використовуйте віртуалізацію. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 22. Робіть останній збудований код легко доступним • Людям набагато легше подивитись на те що зроблено не так і сказати як треба виправити, ніж уявити або пояснити. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 23. Робіть останній збудований код легко доступним • Всі хто залучений до проекту мають легко отримати останній варіант збудованого коду та запустити його: для демонстрацій, тестування або щоб подивитись що змінилося. • Всім відоме місце де можна отримати останній збудований продукт. Продукт має принаймі проходити коміт тести (бути достатньо стабільним). Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 24. Всі мають бачити що відбувається • CI в основному це комунікація, так що вам потрібно упевнитись, що всі можуть легко бачити стан системи та зроблені в ній зміни. • Монітори у системному лотці, ліхтарі, лампи з лавою, іграшкові ракетниці і т.п. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 25. Всі мають бачити що відбувається • Використовуйте інструмент з вебсайтом у якості інформаційної панелі, звітності та розширеної інформації. • Настінний календар для команди QA з червоними та зеленими наліпками, що вказують на здорові та зламані білди. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 26. Автоматизуйте впровадження ● Для CI вам потрібні різні середовища Розробка Тестування Демо Другорядне Виробництво Тестування • Автоматизуйте переміщення продукту. • Передбачте відкат з виробництва. • Поступове(rolling) впровадження у кластерах. • Випробувальні версії деяким користувачам. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 27. Переваги CI • У будь-який час ви знаєте де ви є, що працює, що не працює, критичні помилки які є в системі. • CI не звільняє від помилок, але дозволяє їх виявляти значно легше. • Помилки мають кумулятивний характер. Чим більше помилок у вас є, тим складніше виправити одну. Синдром зламаних вікон. • При використанні CI, у вас зникає одна з найбільших перешкод для частого впровадження – між клієнтами та розробкою. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 28. Впровадження • Автоматизуте побудову. Будуйте всю систему єдиною командою. Будуйте при потребі. • Додайте автоматизоване тестування у вашу побудову. Визначіть основні частини. Почніть робити. • Спробуйте прискорити побудову. Чарівні 10 хвилин. • Почніть CI від самого початку проекту. • Шукайте допомогу. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 29. Інструменти • Jenkins(Oracle Hudson) – написаний на Java, ліцензовний під MIT, працює у контейнері сервлетів, підтримує CVS, Subversion, Mercurial, Git, StarTeam Clearcase, Ant, NAnt, Maven та shell скрипти. • CruiseControl – оснований на Java фреймворк для процесу неперервної побудови. • CruiseControl.NET – оснований на .NET автоматизований сервер інтеграції. • Apache Continuum – сервер неперервної інтеграції з підтримкою Apache Maven та Apache Ant. Підтримує CVS, Subversion, shell скрипти і т.п. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 30. Інструменти • Дослідження університету Fontys (США, ЄС, Австралія) 2009 рік: Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 31. Jenkins (Oracle Hudson) • Легке встановлення • Легка конфігурація • Підтримка наборів змін • Постійні посилання • Інтеграція з RSS/E-mail/IM • Після-фактичні мітки • Звітування JUnit/TestNG • Розподілені побудови • “Відбитки” фалів • Підтримка плагінів Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 32. Приклад Java проекту • Автоматичний моніторинг SCM • Побудова проекту • Автоматичне тестування • Статичний аналіз коду • Публікація артифактів • Автоматичне впровадження • Інструменти: Ant, Maven, JUnit, PMD, FindBugs Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 38. Приклад PHP проекту • Автоматичний моніторинг SCM • Автоматичне тестування • Статичний аналіз коду • Публікація артифактів • Автоматичне впровадження • Інструменти: Ant, phpUnit, pDepend, phpMD, phpCPD, phpLOC, phpCS, phpDOC, phpCB Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 39. Приклад PHP проекту: Charts Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 40. Приклад Android проекту • Автоматичний моніторинг SCM • Побудова проекту • Автоматичне тестування • Статичний аналіз коду • Публікація артифактів • Інструменти: Ant, JUnit (custom XML logger), PMD, FindBugs, Android SDK, Android Emulator (headless/Xvfb), ADB Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 41. Приклад Android проекту: Job Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 42. Висновки • Continuous Integration стала однією з основних технік у розробці програмного забезпечення. • Багато команд виявили що користь застосування CI значно переважає недоліки. • Ефект від раннього виявлення та виправлення помилок інтеграції зберігає час та гроші упродовж життєвого циклу проекту. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 43. Висновки: плюси та мінуси • Коли unit тести не спрацьовують або виникає • Потрібен початковий помилка, розробники можуть повернути код у час на налаштування. попередній стан без помилок, без потреби витрачати • Детально час на пошук помилок. розроблений набір • Розробники виявляють і виправляють проблеми тестів потрібен для інтеграції постіно – запобігаючи хаосу останніх отримання переваг хвилин перед релізом. від автоматичного • Раннє попередження про зламаний/несумісний код. тестування. • Раннє попередження про конфліктуючі зміни. • Широко-масштабний • Миттєве unit тестування усіх хмін. рефакторинг може • Постійна доступність “поточної” зборки для бути проблематичним тестування, демонстрації або релізу. через постійно змінну • Миттєвий зворотній зв'язок з розробниками про кодову базу. якість, функціонал або системний вплив коду що • Витрати на залізо для вони пишуть. машин побудови • Часті збереження коду штовхають розробників можуть бути створювати модульний та меньш складний код. високими. • Метрики що генеруються з автоматичного тестування та CI фокусують розробників на впровадженні функціонального, якісного коду і допомагають розвинути момент у команді. Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 44. Посилання ● http://en.wikipedia.org/wiki/Continuous_integration ● http://www.martinfowler.com/articles/continuousIntegration.html ● http://www.extremeprogramming.org/rules/integrateoften.html ● http://cruisecontrol.sourceforge.net/overview.html ● http://wiki.hudson-ci.org/display/HUDSON/Use+Hudson ● http://continuum.apache.org/ ● http://www.wakaleo.com/books/continuous-integration-with-hudson-the-book ● http://www.developer.com/open/article.php/3803646/The-Best-Continuous-Integ ● http://jamesshore.com/Blog/Continuous-Integration-is-an-Attitude.html ● http://jan.krutisch.de/en/2010/01/13/the-hudson-siren-small-pieces-loosely-joine Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 45. Питання та обговорення “Анатолій Охотніков” <aokhotnikov@softjourn.com> Copyright © 2000-2011 Softjourn, Inc. All rights reserved