PDA

Pogčedajte punu verziju : Idealna dev organizacija projekata (SVN, serveri, deployment, itd.) ?


ivanhoe
16. 09. 2009., 11:24
Podseti me blues sa svojom SVN related temom (http://www.devprotalk.com/t7867-svn-export-na-ftp.html) na nesto sto sam odavno hteo da pitam: koja je po vama idealna organizacija rada za web development projekte na kojima radi veci broj ljudi, uz upotrebu SVN-a ?

Znaci imamo sledecu situaciju:

Veci broj developera i dizajnera, dobar deo njih na windowsu, vecina se onesvesti na pomen shell-a
Dev server na kome je svn server i sve ostalo sto treba, i na kome se radi razvoj koda (da bi svi imali isto okruzenje, bazu, memcached i sl.), kao i testiranje
Production server - na njemu je zivi sajt i alpha testing sajt


Kako u sto manje koraka organizovati da ljudi mogu da rade od kuce, da probaju to sto rade na dev serveru (svako na svom vhostu), da se onda to sve shutne na testiranje i onda na kraju iskopira na production server?

Glavni problem na koji ja nailazim mi je kako da windows korisnicima koji su navikli na kliktanje omogucim da koriste recimo tortoiseSVN, a da pritom kod edituju direktno na serveru. Idealo bi bilo kad bi mogli da mapiraju drajv na dev serveru na svoje windowse, pa da onda iz tortoiseSVN mogu samo da kliknu commit, ali to bi zahtevalo VPN, ili gresim?

Mi to resavamo seljacki, ljudi u sustini sve rade u lokalu na svojim masinama, pa tek onda iskopiraju na dev i tamo isprobaju, ali to je ok za obicne sajtove, kad u pricu udju dodatni servisi tipa memcache, gettext i sl. onda nastanu problemi da svako pojedinacno mora to sve da namesta u lokalu, gubi se bas puno vremena na tu vrstu supporta i razne side-efekte zbog razicitog okruzenja.

kako ste vi organizovani oko toga?

zira
16. 09. 2009., 13:10
Koristio sam WebDrive (http://www.webdrive.com/products/webdrive/index.html) na Win za ovo sto opisujes.

dejanr
16. 09. 2009., 16:02
Za deployment : capistrano + svn (git)

Ono sto trebas da imas za ovakav nacin deploy-a je, ruby na lokalnom kompu sa capistrano bibliotekama. Na serveru (serverima) ssh pristup. I svn ili git SCM.

Napises taskove u capistranu za deploy, i podesis vise stage-ova (beta, prod), meni je beta default stage za deployment. Obicno imam beta.sajt.com i www.sajt.com. Evo par taskova koje ja koristim svakodnevno, koji se pokrecu iz komandne linije:

cap deploy, update-uje workingcopy na beti
cap prod deploy, update-uje workingcopy na production-u
cap db:migrate, migrira bazu na beti (koristim doctrine (http://www.doctrine-project.org/), migracije su slicne kao u RoR-u)
cap prod db:migrate, isto to na production-u

Stim sto db:migrate i deploy koristim u kombinaciji

cap prod db:sync, importujem podatke sa production sajta na localhost

etc ...

Ovo mozes koristiti za bilo koji projekat u java-i, php-u, ruby-u, python-u.
Taskove pises sa pozivom system capistrano funkcije koja izvrsava komande putem ssh-a. Znaci i sa iole slabijim poznavanjem ruby-a i unix-a moguce je napisati taskove, pa cak i kombinovati par, za jako jednostavan deployment.

Ako nekom treba upload-ovacu svoju konfiguraciju capistrano konfiguracionih fajlova.

robi-bobi
16. 09. 2009., 16:10
svn
trac sa svn afterupdate hook (updejtuje i zatvara tickets)
na production serveru apache je knfigurisan da ne servira .svn, tako da samo uradim svn update
sto se tice baze, SQL-i idu u jedan folder, odatle se obradjuju PHP-om i pustaju samo novi

dejanr
16. 09. 2009., 16:19
svn
trac sa svn afterupdate hook (updejtuje i zatvara tickets)
na production serveru apache je knfigurisan da ne servira .svn, tako da samo uradim svn update
sto se tice baze, SQL-i idu u jedan folder, odatle se obradjuju PHP-om i pustaju samo novi

Isto kao kod mene bez trac-a, samo mislim da je moj nacin elegantniji. Jedna komanda umesto 5+.

cap deploy = ssh server.com, cd /var/www/workingcopy, svn update, db migrate