SlideShare a Scribd company logo
1 of 45
Download to read offline
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

Viewers also liked

Viewers also liked (9)

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

Similar to ITEvent: Continuous Integration (ukr)

Continious integration jet brains teamcity. Віталій Галушка
Continious integration jet brains teamcity. Віталій ГалушкаContinious integration jet brains teamcity. Віталій Галушка
Continious integration jet brains teamcity. Віталій ГалушкаHRdepartment
 
AngularJS on Javascript User Group, Lviv
AngularJS on Javascript User Group, LvivAngularJS on Javascript User Group, Lviv
AngularJS on Javascript User Group, LvivDmitriy Hunkin
 
Automation as a Way to Do Routine Work Quickly and Effortlessly
Automation as a Way to Do Routine Work Quickly and EffortlesslyAutomation as a Way to Do Routine Work Quickly and Effortlessly
Automation as a Way to Do Routine Work Quickly and EffortlesslyGlobalLogic Ukraine
 
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)
[Knowledge Sharing] - Unit Testing by Pavlo Serdyuk (UKR)Exoft LLC
 
Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon QA Meetup 31.01.2020
Stfalcon QA Meetup 31.01.2020Stfalcon Meetups
 
природна і економна дорожня карта для переходу команди розробки на тест центр...
природна і економна дорожня карта для переходу команди розробки на тест центр...природна і економна дорожня карта для переходу команди розробки на тест центр...
природна і економна дорожня карта для переходу команди розробки на тест центр...Andrii Podanenko
 
Caliburn Micro Overview
Caliburn Micro OverviewCaliburn Micro Overview
Caliburn Micro OverviewKiev ALT.NET
 
Іван Дзямулич “AppStore – як стартанути і розвиватись?”
Іван Дзямулич “AppStore – як стартанути і розвиватись?”Іван Дзямулич “AppStore – як стартанути і розвиватись?”
Іван Дзямулич “AppStore – як стартанути і розвиватись?”Lviv Startup Club
 
"Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an..."Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an...Fwdays
 
DrupalTour. Khmelnytskyi — Ember (Timur Bolotyuh, stfalcon.com)
DrupalTour. Khmelnytskyi — Ember (Timur Bolotyuh, stfalcon.com)DrupalTour. Khmelnytskyi — Ember (Timur Bolotyuh, stfalcon.com)
DrupalTour. Khmelnytskyi — Ember (Timur Bolotyuh, stfalcon.com)Drupaltour
 
Global logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.jsGlobal logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.jsPavlo Iuriichuk
 
Павло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. HowtoПавло Юрійчук — Перехід на Angular.js. Howto
Павло Юрійчук — Перехід на Angular.js. HowtoGlobalLogic Ukraine
 
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»
ОЛЕГ ЗАРЕВИЧ «Shift left та Shift Right підходи до тестування»GoQA
 
ОЛЕГ ЗАРЕВИЧ «How did we improve delivery using tests» Lviv QA Day 2019
ОЛЕГ ЗАРЕВИЧ «How did we improve delivery using tests» Lviv QA Day 2019ОЛЕГ ЗАРЕВИЧ «How did we improve delivery using tests» Lviv QA Day 2019
ОЛЕГ ЗАРЕВИЧ «How did we improve delivery using tests» Lviv QA Day 2019GoQA
 
Чим простіше - тим краще, Стас Хорунжий
Чим простіше - тим краще, Стас ХорунжийЧим простіше - тим краще, Стас Хорунжий
Чим простіше - тим краще, Стас ХорунжийSigma Software
 
МИКОЛА СОЛОПІЙ «Моя формула успішної імплементації Тестової Тули на проекті» ...
МИКОЛА СОЛОПІЙ «Моя формула успішної імплементації Тестової Тули на проекті» ...МИКОЛА СОЛОПІЙ «Моя формула успішної імплементації Тестової Тули на проекті» ...
МИКОЛА СОЛОПІЙ «Моя формула успішної імплементації Тестової Тули на проекті» ...GoQA
 
Корнілов Андрій
Корнілов АндрійКорнілов Андрій
Корнілов АндрійOleg Nazarevych
 
Savitskyi Roman - Chrome Dev Tools. New & Tips
Savitskyi Roman - Chrome Dev Tools. New & TipsSavitskyi Roman - Chrome Dev Tools. New & Tips
Savitskyi Roman - Chrome Dev Tools. New & TipsOdessaJS Conf
 

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

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

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