43
Jak to děláme ve Wikidi Lex Vjatkin, Ondřej Procházka

Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

  • Upload
    develcz

  • View
    278

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

Jak to děláme ve Wikidi Lex Vjatkin, Ondřej Procházka

Page 2: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

Moderní prostředí v PHP firmě

Příjemný ekosystém Development + Operations

Page 3: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

15 vývojářů2 admini

PHP, C, ..

Page 4: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

6 projektů

?

Page 5: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

80 strojů(12 fyzických)

Page 6: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

Git

RychlýNejlepší!

Page 7: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

Automatizace Build & Deploy

Page 8: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

Automatizace Build & Deploy

Ant

Page 9: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

<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

Page 10: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

Ant

+ AntContrib+ Flaka

<groovy></groovy>

Gradle

Page 11: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

$ 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

Page 12: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

$ ant deploy -Ddeploy.path=/var/www/..

Page 13: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi
Page 14: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

HASH

Page 15: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi
Page 16: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

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

Page 17: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

HASH+ oddělený build revize na zavolání+ cache s prefixem- sdílená DB

Page 18: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi
Page 19: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

TestbuilderDistribuce testovací platformy

Page 20: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

různé verze testovacích nástrojů

různé nastavení testovací nástrojů

složitá distribuce

Page 21: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

Testbuildergit submodule

PHPUnitPHPUnit_SeleniumTestomato (apimato)CodeSnifferJSHint

Page 22: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

$ ant test-all

$ ant test-selenium

Page 23: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi
Page 24: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

$ ant test-selenium

Selenium Server

Page 25: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

WC - Wikidi Center

Email:

Page 26: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi
Page 27: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

WC - Wikidi Center

todo: foto TV

Page 28: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

WC - Wikidi Center

výsledky testůincidenty z/do nagiosupranýřzprávy

api

Page 29: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

WC - Wikidi Center

Devel prostředí: po commituOstré prostředí: 1x hodinu

Page 30: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

Configuration management

JEDNODUCHOST

base.ini - v repozitáři

private.ini - na stroji

Page 31: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

Rychlost instalace aplikace

Pro nového vývojářeNa strojích

Page 32: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

Pre / Release

☑ Bez admina™

Page 33: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

$ git push origin pre

Pre / Release

A A A AA

S

PRE STABLE

Page 34: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

$ git push origin release/20120611.1

Release

A A A AA

S

PRE STABLE

Page 35: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

$ git push origin release/20120611.2

Release - rollback

A A A AA

S

PRE STABLE

20120610.1

Page 36: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

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

Page 37: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

Nástroje

admin.testomato.trunk.wikidi.net

LogyProfileryAdminer, Rockmongo, atd.

Zlepšují efektivitu komunikace admin-vývojář o 113 % !

Page 38: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

Log viewer

multitodo: screen

Page 39: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

Organizace vývoje

Mocný vývojář vs. Paranoidní admin

-> Kompromis

Page 40: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

Organizace vývoje

Mocný vývojář vs. Paranoidní admin

Testy, logyTestovací prostředí

Page 41: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

Shrnutí: nástroje

Google Closure

HashTestbuilderWikidi Center - TVLogviewerRelease "Bez admina"

Page 43: Lex Vjatkin + Ondřej procházka: Jak to děláme ve Wikidi

Shrnutí: nástroje

Google Closure

HashTestbuilderWikidi Center - TVLogviewerRelease "Bez admina"