ITEvent: Continuous Integration (ukr)

  • 163 views
Uploaded on

• Що таке continuous integration (CI)? …

• Що таке continuous integration (CI)?
• Побудова фічі з CI
• Практики та Переваги
• Впровадження
• Інструменти
• Приклади проектів -
Java, PHP, Android
• Висновки

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
163
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Continuous Integration29/10/2011
  • 2. ITEventContinuous 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
  • 7. Просто зробіть це...
  • 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
  • 33. Приклад Java проекту: Job
  • 34. Приклад Java проекту: Build
  • 35. Приклад Java проекту: JUnit
  • 36. Приклад Java проекту: FindBugs
  • 37. Приклад Java проекту: PMD
  • 38. Приклад PHP проекту• Автоматичний моніторинг SCM• Автоматичне тестування• Статичний аналіз коду• Публікація артифактів• Автоматичне впровадження• Інструменти: Ant, phpUnit, pDepend, phpMD, phpCPD, phpLOC, phpCS, phpDOC, phpCB Copyright © 2000-2011 Softjourn, Inc. All rights reserved
  • 39. Приклад PHP проекту: ChartsCopyright © 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 проекту: JobCopyright © 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