5. Deployment PHP aplikací mnoho projektů s častými aktualizacemi desítky až stovky úprav měsíčně jak je nahrát do produkčního prostředí? deployment aplikace řada rutinních kroků na mnoha místech možnost udělání chyby žádná přidaná hodnota nikoho to nebaví
6. Otevření databázového klienta Přihlášení do databáze Úprava databázového schématu Lokální práce vývojáře Je vše OK? Kontrola výsledku a chyb Commit do repository Čekání na dokončení přenosu občas se na commit zapomene… Je vše OK? opakování přenosu (FTP padá…) Spuštění FTP klienta Spuštění přenosu Notifikace týmu o deploymentu Notifikace zákazníka o deploymentu Připojení ke správnému FTP serveru Výběr změněných souborů
7. Lokální práce vývojáře Commit do repository Otevření deployovací aplikace Kliknutí na tlačítko „Deploy!”
11. Funkcionalita#1 přenos jen změněných souborů tisíce souborů, stovky adresářů migrace databáze spouštění delta skriptů pro migraci databáze zálohování databáze před migrací různá konfigurace pro různá běhová prostředí např. doplnění produkčních hesel aby nebyla uložena v repository, ale doplnila se až při deploymentu můžeme tak nechat na projektu pracovat kohokoliv
12.
13. Funkcionalita #2 linkování externích knihoven a sdílených adresářů Zend Framework, Nette, ... uploadované soubory, logy, ... automatické odstraňování cache a dalších souborů členové týmu i zákazník obdrží e-mail s notifikací včetně přehledu provedených změn (volitelně)
14. Eliminace rizika lidského faktoru nikdo nezná hesla do žádných služeb FTP, SSH, DB, … špatný adresář nebo soubor při uploadu opomenutí commitu do repository méně technicky zkušení členové týmu např. grafici … a to vše na jedno kliknutí
16. Charakteristika řešení #1 systém pro správu verzí nezbytným základem SVN, Git, … automatizace potřebných kroků pomocí nástroje Phing velmi podobné javovému nástroji Ant řada připravených a užitečných tasků možnost psát vlastní tasky jednoduše a rychle přímo v PHP spouštění phingových skriptů pomocí deployovací aplikace instalované na produkčním a integračním serveru
17.
18.
19. Charakteristika řešení #2 pro všechny projekty je stejný build skript (orchestrační skript) automaticky modifikován dle konfigurace daného projektu symlinky (sdílené adresáře) replace pravidla (produkční hesla) remove pravidla (cache) dostatečně univerzální řešení (proprietární aplikace, ZF, Wordpress) logika fungování podobná nástroji Capistrano pro RoR current, releases a shared adresáře - symlinking Phing i DBDeploy musel být trochu upraven úprava stávajících tasků, přidání vlastních tasků celé ale v PHP
20.
21. Možná rozšíření spouštěnítestů na testovacím serveru napojení na CI server Jenkins, PHPUnderControl, CruiseControl, … PHP CodeSniffer, PHPMD, PDepend, … javascripty a CSS soubory minifikace kombinování souborů přímá podpora Phingu
22. Co když… … máte hosting jen s FTP přístupem? … máte hosting se SFTP/SCP přístupem? … máte vlastní server nebo SSH přístup?
23. Jak začít? 1. Nainstalujte si PEAR + Phing 2. Vytvořte první build skript 3. Přidejte úkoly pro deploy target 4. Spusťte phing deploy –buildfilescript.xml 5. Upravujte build skript k obrazu svému 6. Zautomatizujte spouštění phingu
24. Zhodnocení našeho řešení aktivně využíváno od dubna 2010 u 150 projektů průměrně 8 deploymentů denně min. 1/2hodinová úspora času denně roční úspora odhadem až 20 čld. značné snížení chybovosti a zvýšení agilnosti cokoliv se otestuje, je možné ihned nasadit databáze a aplikace vždy ve stejné verzi všechno musí projít přes repository
25. Existující řešení Capistrano, Capifony, Phingistrano, Pake, … ne však zcela univerzální řešení PHPFog, PagodaBox PaaS cloudové služby s možností one-click deploymentu neposkytují však všechny popisované funkce připravujeme vlastní projekt Elephantra.cz ne open-source, ale důležité funkce zdarma
26. Co si odnést? manuální deployment je ztráta času a peněz deployment PHP aplikací lze automatizovat existujínástroje, které vám pomohou