Upload
develcz
View
278
Download
2
Embed Size (px)
Citation preview
Jak to děláme ve Wikidi Lex Vjatkin, Ondřej Procházka
Moderní prostředí v PHP firmě
Příjemný ekosystém Development + Operations
15 vývojářů2 admini
PHP, C, ..
6 projektů
?
80 strojů(12 fyzických)
Git
RychlýNejlepší!
Automatizace Build & Deploy
Automatizace Build & Deploy
Ant
<target name="build" depends="compile-less"> <echo>Building..</echo> <copy todir="${build.dir}" dir="build" /></target>
<target name="compile-less"> <mkdir dir="public/css" /> <uptodate property="cssUptodate" targetfile="public/css/.uptodate.touch~"> <srcfiles dir="src-less" includes="**/*.less" /> </uptodate> <fl:when test="empty cssUptodate"> <echo>[INFO] CSS's are out-of-date. Regenerating..</echo> <lessc in="src-less/*.less" out="public/css/" /> <touch file="public/css/.uptodate.touch~" /> </fl:when></target>
<target name="deploy">........
build.xml
Ant
+ AntContrib+ Flaka
<groovy></groovy>
Gradle
$ ant deployBuildfile: /home/lex/workspace/web.wikidi/build.xmlmake-paths-config: [copy] Copying 1 file to /home/lex/htdocs/wikidi-prepare: [echo] *** Ant web.wikidi prepare - start logging to build.log ***deploy: [echo] *** Starting deploy process ***-mkOtherDirs:deploy-submodules:-prepare: [echo] *** ant lib.w prepare ***deploy-src: [copy] Copying 10 files to /home/lex/htdocs/wikidi/classes-prepare: [echo] *** ant lib.zx prepare ***deploy-src: [copy] Copying 2 files to /home/lex/htdocs/wikidi/classes
$ ant deploy -Ddeploy.path=/var/www/..
HASH
HASHJak?
apache rewrite -> bash -> git -> antVirtualDocumentRoot /var/www/testomato/mass/%1/public/RewriteCond %{SERVER_NAME} ^([^.]+)\.RewriteCond /var/www/testomato/mass/%1/public/index.php !-fRewriteRule ^.*$ /cgi-bin/mkHashDir.cgi [PT,L]
if [ -n "${ProjectName}" ] && [ -x "${RunFile}" ] ; then sudo -u ${ProjectName} /usr/sbin/makeHas.sh ${SERVER_NAME} &
buildMasterDir -> checkBuildLock -> buildHashDir -> runAnt -> move to target Directory
HASH+ oddělený build revize na zavolání+ cache s prefixem- sdílená DB
TestbuilderDistribuce testovací platformy
různé verze testovacích nástrojů
různé nastavení testovací nástrojů
složitá distribuce
Testbuildergit submodule
PHPUnitPHPUnit_SeleniumTestomato (apimato)CodeSnifferJSHint
$ ant test-all
$ ant test-selenium
$ ant test-selenium
Selenium Server
WC - Wikidi Center
Email:
WC - Wikidi Center
todo: foto TV
WC - Wikidi Center
výsledky testůincidenty z/do nagiosupranýřzprávy
api
WC - Wikidi Center
Devel prostředí: po commituOstré prostředí: 1x hodinu
Configuration management
JEDNODUCHOST
base.ini - v repozitáři
private.ini - na stroji
Rychlost instalace aplikace
Pro nového vývojářeNa strojích
Pre / Release
☑ Bez admina™
$ git push origin pre
Pre / Release
A A A AA
S
PRE STABLE
$ git push origin release/20120611.1
Release
A A A AA
S
PRE STABLE
$ git push origin release/20120611.2
Release - rollback
A A A AA
S
PRE STABLE
20120610.1
Srozumitelné adresy
8ef3c.testomato.hash.wikidi.net
testomato.trunk.wikidi.net
testomato.pre.wikidi.net
testomato.stable.wikidi.net
tech-specs.stable.wikidi.net
topicleaders.stable.wikidi.net
Nástroje
admin.testomato.trunk.wikidi.net
LogyProfileryAdminer, Rockmongo, atd.
Zlepšují efektivitu komunikace admin-vývojář o 113 % !
Log viewer
multitodo: screen
Organizace vývoje
Mocný vývojář vs. Paranoidní admin
-> Kompromis
Organizace vývoje
Mocný vývojář vs. Paranoidní admin
Testy, logyTestovací prostředí
Shrnutí: nástroje
Google Closure
HashTestbuilderWikidi Center - TVLogviewerRelease "Bez admina"
Shrnutí: nástroje
Google Closure
HashTestbuilderWikidi Center - TVLogviewerRelease "Bez admina"