Jemný úvod do Continuous Integration a Continuous Delivery Mgr. Jiří Činčura http://blog.cincura.net @cincura_net  Integrace změn od všech vývojářů několikrát denně  Neodstraňuje chyby, ale umožňuje je lépe/dříve najít  Chaos před releasem  „integration hell“/“merge hell“  Časté testy – ideálně bez následného debuggingu  V nouzi malý revert  Vždy aktuální „demo“/„release“  Automatizace  Rychlé iterace  Modulární „nezamotaný“ kód (?) Continuous Integration  Git, Subversion, TFS, …  Build po čistém checkoutu  Žádné závislosti  Minimizovat větve  Maximum přímo v „trunk“/“master“ CI – code repository  Jeden příkaz – kompletní build  Kód, testy, balíčky/instalátory, dokumentace, web, …  Manuální práce = chyby  Opakovatelnost  make, psake, fsake, ant, … CI – automatizace  Build je první test   Potvrzení, že vše funguje jak má  Unit testy, performace testy, …  Testy v prostředí maximálně podobném produkci CI – testy  Časté  Každý developer několikrát denně  Konflikty  „merge hell“  Izolované/malé  Konkrétní věc  Minimum souborů  Jasně ohraničené  Do „trunk“/“master“  Každý commit jde buildnout a otestovat  Build server CI – commity  Rychlý build = rychlá integrace = rychlé odhalení problému  Včetně testů CI – build je rychlý  Výsledek buildu jednoduše dostupný  Kód, výsledky testů, …  Každý vidí jednoduše výsledky  Vše funkční je teamový gól CI – jednoduché získání výsledků   Continuous Delivery CI – automatický deployment  Continuous Deployment  Každá změna (commit) je releasovatelná  Častý a opakovaný deployment se změnami k zákazníkům  Bug fixy, nové funkce, …  Opět minimum manuální práce Continuous Delivery  Přechod od dlouhého release cyklu vyžaduje změnu myšlení  Release musí být nuda  Cena  Feature toggles  DevOps Continuous Delivery  Amazon:  Změna na produkci každých průměrně 11,6s (2011)  Google:  Releasy několikrát týdně  Facebook  2x denně  Bing, Esty, Neflix  Visual Studio  HP LaserJet firmware (>10M LOC)  400 lidí, 3 kontinenty  100-150 změn/den  10-14 finálních buildů Continuous Delivery Q & A