webkonf 2013
TRANSCRIPT
![Page 1: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/1.jpg)
Fejlesztés, tesztelés élesben
Papp Dávid
… fájdalom mentesen
![Page 2: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/2.jpg)
A következőkről fogok beszélni
• Vagrant– Egységes fejlesztési környezet
• Jenkins– Automatizált teszt
• Capistrano– Élesítés
![Page 3: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/3.jpg)
Miért fáj ha…
• … nincs egységes fejlesztői környezet• ( nálam még működött )
• … nincsenek automatizált tesztek• ( a fejlesztő/tesztelő azt mondta
mehet… )• … nincs deployer• ( tuti minden szerverre ki ment a
kód? )
![Page 4: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/4.jpg)
Mit tud nyújtani nekünk a Vagrant?• Egységes fejlesztői környezetet
biztosít • Központilag konfigurálható ( Puppet,
Chef )• Könnyen telepíthető és hordozható• VirtualBox és VMware támogatás
![Page 5: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/5.jpg)
..és még (mit adtak nekünk a rómaiak) ?
• Decentralizált• Jobb erőforrás kihasználás• A fejlesztő saját sandboxot kap• Cloud friendly
![Page 6: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/6.jpg)
Miért pont Vagrant?
• Open Source• Pluginekkel könnyen bővíthető• Egyszerű kezelhetőség• VirtualBoxot használ
![Page 7: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/7.jpg)
Negatívumok• Bevezetése erőforrás-igényes lehet• Nem tudunk esetlegesen az élessel
megegyező infrastruktúrát építeni• Üzemeltetők részéről Puppet, Chef tudás
szükséges lehet• I/O igényes műveleteknél lassú• Csak linuxot támogat
![Page 8: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/8.jpg)
Példa konfig
Vagrant.configure("2") do |config| config.vm.hostname = "webconf2013.iamhere.local" config.vm.box = "precise64" config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.network :private_network, ip: "10.1.1.58" config.vm.network :forwarded_port, guest: 80, host: 8080 config.vm.network :forwarded_port, guest: 443, host: 8443
![Page 9: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/9.jpg)
Példa konfigconfig.vm.provision :puppet do |puppet| puppet.manifests_path = "puppet/manifests" puppet.manifest_file = "base.pp" end
config.vm.provider :virtualbox do |vb| vb.gui = false vb.customize ["modifyvm", :id, "--memory", "512"] endend
![Page 10: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/10.jpg)
Demo
![Page 11: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/11.jpg)
Miért jó az automatizált teszt?
• Nem kell ott ülni amíg fut a teszt• Hatékonyabbá teszi a tesztelők
munkáját• Automatikus teljesítmény,
kódminőség figyelés és figyelmeztetés
![Page 12: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/12.jpg)
Miért pont a Jenkins?
• Ingyenes és open source• Egyszerű kezelhetőség• Egyszerű bővíthetőség• Nagy community 600+ plugin érhető
el
![Page 13: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/13.jpg)
PMD & Duplicate Code
![Page 14: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/14.jpg)
Code Coverage
![Page 15: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/15.jpg)
Test Result Trend
![Page 16: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/16.jpg)
Negatívumok• Kézzel kell írni a build.xml-t• Sok feladat esetén memória igényes• Nem clusterhezhető• Nehezen upgradelhető ( a pluginek
miatt )
![Page 17: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/17.jpg)
Példa <target name="lint" description="Perform syntax check of sourcecode files"> <apply executable="php" failonerror="true"> <arg value="-l" /> <fileset dir="${sourcedir}"> <include name="**/*.php" /> <modified /> </fileset> <fileset dir="${basedir}/src/"> <include name="**/*Test.php" /> <modified /> </fileset> </apply> </target> </target>
![Page 18: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/18.jpg)
Miért használjunk deployert?
• Multi staging• Multi node type• Emberi hiba faktor kiszűrése• Minden szerveren a megfelelő kódbázis
legyen kint• Rollback képesség
![Page 19: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/19.jpg)
Mi a capistrano előnye?• Könnyen bővíthető• Open Source• Rengetek plugin elérhető ( pl. teljes symfony
támogatás )• Bevezetése egyszerű nem igényel nagyobb
infrastrukturális beállítást• Eszközt és módszert add a kezünkbe
![Page 20: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/20.jpg)
Mi a hátránya a Capistranonak?
• Kezdetleges cloud és cdn támogatás–… de azt inkább írni kell
• Bővítéséhez ruby tudás szükséges
![Page 21: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/21.jpg)
Példaset :application, "webconf"set :deploy_to, "/var/www/webconf"
set :repository, "https://github.com/WordPress/WordPress.git"set :scm, :gitset :branch, 'master'
set :keep_releases, 3set :use_sudo, falseset :update_vendors, falseset :deploy_via, :copy
role :web, "10.1.1.58"set :user, "www-data"
set :copy_exclude, [".git", ".DS_Store", ".gitignore", ".gitmodules","nbproject"]
logger.level = Logger::MAX_LEVEL
![Page 22: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/22.jpg)
Kérdések?
![Page 23: Webkonf 2013](https://reader034.vdocuments.pub/reader034/viewer/2022042906/589fdec11a28abf3238b47f5/html5/thumbnails/23.jpg)
Köszönöm szépen a figyelmet!