A következőkről fogok beszélni
• Vagrant
– Egységes fejlesztési környezet
• Jenkins
– Automatizált teszt
• Capistrano
– Élesítés
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? )
Mit tud nyújtani nekünk aVagrant?
• Egységes fejlesztői környezetet biztosít
• Központilag konfigurálható ( Puppet, Chef )
• Könnyen telepíthető és hordozható
• VirtualBox ésVMware támogatás
..é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
Miért pontVagrant?
• Open Source
• Pluginekkel könnyen bővíthető
• Egyszerű kezelhetőség
• VirtualBoxot használ
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
Példa konfig
config.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"]
end
end
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
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
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
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
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
Példa
set :application, "webconf"
set :deploy_to, "/var/www/webconf"
set :repository, "https://github.com/WordPress/WordPress.git"
set :scm, :git
set :branch, 'master'
set :keep_releases, 3
set :use_sudo, false
set :update_vendors, false
set :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