deploy rendszert keresek

Fórumok

Sziasztok!

Deploy rendszert keresek, amivel webes fejlesztésnél automatikusan ki lehet pakolni a kódot a szerverre. Olyan kellene, ami integrálható Git hook-okkal. A pontos igény az lenne, hogy amikor a fejlesztő push-ol a repóba, akkor a fájlok kerüljenek ki egy adott szerverre, hogy melyikre, azt a push-olt branch alapján kellene kiválasztani. Mivel vannak sub-repók is, ezért ha az adott repóhoz nem tartozik ilyen beállítás, akkor a külső repót vegye alapul.
És persze a „szokásos”: Fusson Windows-on is, lehetőleg legyen opensource és használjon rsync-et, lehessen megadni kihagyandó könyvtárakat stb.

Amit néztem eddig, az a puppet, capistrano, ansible, de nem vagyok biztos abban, hogy ezek lennének a megfelelő eszközök.

Hozzászólások

jenkins (CI)
capistrano
fabric
...stb
Van meg jo par.

--
"ssh in a for loop is not a solution" – Luke Kanies, Puppet developer

Szia!

Attól függ milyen nyelven íródott a projekt.

A Phing-et megnézheted, főképp PHP projektekhez, még decemberben írtam egy ismertető cikket róla itt:
Bevezetés a Phing használatába

Ezen kívül létezik még Apache Ant (a Phing is ezen alapul), Java-s projektekhez.

Az Ansible, Puppet nem feltétlenül a legjobb választás, azok inkább másra valóak, a Capistranot pedig inkább Rails-es projektekhez választanám.

Nekem egyébként a kiemelt érdeklődési körömbe tartozik a téma (build, deploy folyamatok, kód analitikai eszközök, minőségbiztosítás), szóval ha érdekel, dobj egy privát üzenetet és szívesen megosztom veled a tapasztalataimat.

Ahogy en csinaltam:

Kod/config bemegy SVN-be

Puppet server 5 percenkent csinal egy automatikus svn co-t egy konyvtarba

Puppet recipek hostokhoz rendelve mit szedjen ki, melyik PUPPET-serveren levo konyvtarhoz szinkronizaljon (amit a szerver ugye 5 percenkent frissit - cron)

clienseken cronbol 15 percenkent lefut a puppet cliens es helyrehozza magat ha valaki beleronditott lokalisan a configkba fileokba stb...

Puppet recipek meg tudod irni h ha valami konfig valtozott pl ujrainditsa a processzt, stb...

Eredmeny - tobbszaz szerver SVN repobol szinkronban tartva, beleertve ssh kulcsok, user profilok, scriptek, installalt appok stv...

Upgrade-nal pl kijavitok egy runningversion -> "xx.yy" -nt a puppet/etc/nodes megfelelo hostjai szamara a laptopomon, SVN commit, es 15 perc mulva megvan az update 300 hoston...

Ennel kicsit bonyolultabb es kell egy kis ido amig megirod a recipeket, classokat stb, de utana mar remecceru :)

Ha nincs nagy kockázata php-nak bash script futattási jogot adni, akkor szerintem ez egy gyors és platform független megoldás.

http://net.tutsplus.com/tutorials/other/the-perfect-workflow-with-git-g…

Nálunk a következő képpen megy:

git push -> github post receive meghívja a developer szervert -> szerveren lefut a bash script amit lefuttatja a 'git clone' -t és checkout az apache www folderbe. Néha belenyúlok a bash script-be hogy okosabb legyen, branch/verzió kezeléssel lehet bővíteni, mert a github API elég sok mindent átad. Éles szerveren természetesen már manuálisan ssh és git clone.

Előny: tudsz nagyon sok projektet egyszerűen, akár branchenként elérhetővé tenni.
Hátrány: php bash scriptet futtat.

Update, mert kihagytam: php cron nyomat egy git clone-t a webszerveren 5-10 percenként és akkor nem kell bash scriptet hívogatni commitonként.

Az hogy a Puppet erre nem valo, az nem igaz, legalabbis egy nagyobb cegnel igy mukodtetjuk.:)

Valamilyen verziokezelo rendszerrel kezeled, megcimkezed a serveredre kimeheto fileokat, itt megfelel barmi olyan verziokezelo, ami kezel taget, cimkezest, stb.

Megirod a scriptedet, hogy ezekbol a fileokbol keszitsen egy debian csomagot, illetve verzioszamot irja bele a puppet confba, igy amit elerheto a debian repoban az uj csomag atomatikusan telepul az adott vezioszammal.

Termeszetesen az egesz rollout elofeltetele egy QA rendszer, megfelelo teszttel. (Hogy ne telepitsen rossz csomagot eles szerverre.)

Udv