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.
5. •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ó
6.
7.
8. Két fázis:
1. Teszt
2. Live
• Projektenkénti
jogosultságok kezelése
• Naplózás
• Deploy után
serverchecker
9. 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
10. •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ó
11. 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
12.
13. 1. Jenkins build indítása
2. 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. Package
3. Deploy to staging
4. Release teszt
5. Share
14. 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
15. 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
16. A rollback művelet egy könyvtárváltással
végrehajtható
Csomagokat váltunk, nem revisiont
17. Jenkins
◦ Ant build
◦ Syntax check
◦ PHP MD
◦ PHP Unit
◦ Code Coverage
◦ PHP Loc
◦ Checkstyle
Project-Matrix authorizáció
◦ Nagyon finom felbontásig hangolható
19. 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ó
20. 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.
21. 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
22. 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
24. •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ó
25. 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
26. 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)