Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Continous Integration and Deployment

1 797 vues

Publié le

Publié dans : Technologie
  • Soyez le premier à commenter

Continous Integration and Deployment

  1. 1. Arkon Zrt.Nagy Károly
  2. 2.  2 rendszer  3 környezet 14 alkalmazásszerver  16 alkamazás  35 svn repository
  3. 3. •Honnan indultunk?Régmúlt •Koncepció •Folyamatok Múlt •Problémák •Alapelvek •Megoldások Jelen •Eredmények •Meddig jutottunk? •Hova tovább?Konklúzió
  4. 4. •Honnan indultunk?Régmúlt •Koncepció •Folyamatok Múlt •Problémák •Alapelvek •Megoldások Jelen •Eredmények •Meddig jutottunk? •Hova tovább?Konklúzió
  5. 5. Két fázis:1. Teszt2. Live• Projektenkénti jogosultságok kezelése• Naplózás• Deploy után serverchecker
  6. 6.  Inkonzisztens kód a webszervereken Konkurenciakezelés nem megoldott Nincs kód-minőségellenőrzés és trending Rsync alatt is ment rá forgalom Központi config nehézkes Push a pull helyett Nem atomi műveletek Nehéz és lassú rollback
  7. 7. •Honnan indultunk?Régmúlt •Koncepció •Folyamatok Múlt •Problémák •Alapelvek •Megoldások Jelen •Eredmények •Meddig jutottunk? •Hova tovább?Konklúzió
  8. 8.  A legfontosabb műveletek legyenek atomi műveletek Legyen staging környezet Egyszerű és gyors rollback Code Quality ellenőrzésére legyen lehetőség Konkurenciakezelés Pull működés
  9. 9. 1. Jenkins build indítása2. SVN update és Ant script futtatása 1. SVN externals update 2. Clean 3. Symfony cc 4. Lintest 5. PHP Depend, PHP MD, PHP CS, PHP Loc 6. PHPUnit 7. Package3. Deploy to staging4. Release teszt5. Share
  10. 10.  Deploy (build)  Staging gépre update-eli a kódot  SVN-es kódon ANT build és Code Quality  Ant által készített csomagot deployolja a staging gépre  Central configból módosítja a kódot  Scripteket futtat Distribute (share)  Prescript futtatása  Csomagot kirakja az éles szerverekre  Billentés  Postscript futtatása
  11. 11.  Minden esetben komplett csomag kerül kihelyezésre a szerverekre Atomi művelettel váltás régi és új kód között Előnyök ◦ Folyamatosan felügyelhető config paraméterek ◦ „Tiszta” kód ◦ Integritás megőrzése ◦ Egyszerű rollback
  12. 12.  A rollback művelet egy könyvtárváltással végrehajtható Csomagokat váltunk, nem revisiont
  13. 13.  Jenkins ◦ Ant build ◦ Syntax check ◦ PHP MD ◦ PHP Unit ◦ Code Coverage ◦ PHP Loc ◦ Checkstyle Project-Matrix authorizáció ◦ Nagyon finom felbontásig hangolható
  14. 14.  Inf.arkon.hu ◦ Share queue
  15. 15.  Inf.arkon.hu ◦ Python (Django) ◦ Deployment és monitoring ◦ A share funkciót valósítja meg ◦ Queueban tárolt job-ok percenként indulnak el, ha nincsen konkurens share folyamat ◦ Site-onkénti jogosultság ◦ LDAP authentikáció
  16. 16.  Csomagtovábbítás ◦ A csomagokat az ANT script állítja elő tar.gz formában ◦ A deploy kicsomagolja és alkalmazza rajta a felülírásokat ( central config stb.) ◦ Kész csomag továbbítódik a szerverekre ◦ Pre- és postscriptek biztosítják a további testre szabhatóságot  Pl.: check.txt törlése, php-fpm restart stb.
  17. 17.  PHP-FPM APC alatt „beragadt” inode-ok ◦ Prescripttel leállítjuk a php-fpm-et ◦ Postscripttel indítjuk újra TMPfs az átnevezett könyvtárban zárolva tartotta az inode-ot. Időzítés precíz hangolása szükséges a Haproxy miatt (eszközleterhelés vs tartalomkihelyezés) SVN externals nem frissült Időszinkron Jenkinsben
  18. 18.  Ingatlan.com ◦ Több build folyamat során elkapott hiba ◦ Stabilabb deploy folyamat ◦ Kifinomultabb ellenőrzés, így megelőzhető vagy előbb észlelhető hibák ◦ Tesztesetek
  19. 19.  Koponyeg.hu ◦ PHP depend piramis ◦ PMD hibák trendje ◦ Unstable-ből stable ◦ PHP package-ek használata ◦ Kódolási szemlélet váltás
  20. 20. •Honnan indultunk?Régmúlt •Koncepció •Folyamatok Múlt •Problémák •Alapelvek •Megoldások Jelen •Eredmények •Meddig jutottunk? •Hova tovább?Konklúzió
  21. 21.  Inkonzisztens kód a webszervereken  Konkurenciakezelés nem megoldott  Nincs kód minőségellenőrzés és trending  Rsync alatt is ment rá forgalom  Központi config nehézkes  Push a pull helyett  Nem atomi műveletek  Nehéz és lassú rollback 
  22. 22.  Integritásvédelem ◦ Check.txt-be verziószám Release management a CI helyett DB változások kezelése Funkcionális tesztek futtatása Jenkins build- ből (symfony)
  23. 23. Arkon Zrt.Nagy Károly

×