Komentáře k článku

Deploy aplikace přes git

Verzování projektů je snad pro každého vývojáře už úplně běžná věc. Jakmile ale přijde na deploy, je zle. V lepším případě má vývojář nějaký spatlaný skript, který mu synchronizuje data se serverem, v tom horším měněné soubory nahrává manuálně na web přes FTP. Ani jeden z těchto přístupů navíc neřeší další nezbytné úkony jako migraci databáze, invalidaci cache a úpravu práv souborů a podobně.

Zpět na článek

5 komentářů k článku Deploy aplikace přes git:

  1. jlx

    Jednodušší způsob?
    Možná mi něco uniká, ale podle mne se deploy přes git nechá udělat mnohem jednodušším způsobem:

    1) Na serveru si založím repozitář:
    cd /path/to/repo/; git init –bare

    2) Přidám post-receive hook ve tvaru (kde „worktree“ je místo kam se má aplikace vybalit):
    #!/bin/sh
    GIT_WORK_TREE=/path/to/worktree/ git checkout -f

    3) lokálně si přidám repozitář:
    git remote add production ssh://example.com/path/to/repo

    4) a pošlu to na server:
    git push production master

    Celé nastavení je záležitostí pár minut. Repozitář je oddělený od work-tree (což je může být výhoda i nevýhoda). Samozřejmě, že to neřeší dodatečné úkony, ale ty lze prostě dopsat do post-receive hooku..

    1. Mikuláš DítěAutor příspěvku

      Re: Jednodušší způsob?
      Určitě to jde, píšu o tom v první části článku – je to použití jenom samotného gitu. Nerozepisoval jsem, jakou konkrétně metodou se z bare repozitáře data dostanou pod www_root: může to být checkout, fetch, reset, ale klidně i export (což má hodně problémů, ale jde to).

      Jak jsem psal, u tohohle postupu nejsou pořádně vyřešená práva a každý uživatel musí mít ssh přístup. Funguje to, když mám vlastní VPS a s nikým nespolupracuji, ale jinak je potřeba něco robustnějšího.

  2. Tomáš

    Deply
    díky za článek. Mám rád jednoduché věci. Deploy přes Git je výborný nápad pro jednotlivce. Na java/groovy projekty používám Gradle. Kdysi jsem používal Ant a Maven.

  3. tomas.fejfar

    Docela nebezpečné :)
    Nevim, jestli jsem to špatně nepochopil, ale opravdu se po každém deploynutí zavolá hard reset?! Takže pokud si například nahraje obrázek do složky public/images (která je verzovaná) tak mu ho chceme smazat?

    To je právě problém na který jsem narazil – jak donutit git, aby vůbec nesledoval změny v souborech – např. změnu práv z 644 na 777 u logu, atp. Protože jinak při pullnutí dojde k tomu, že je tam konflikt s WorkingCopy

    1. Mikuláš DítěAutor příspěvku

      Re: Docela nebezpečné :)
      Předně git reset --hard nesmaže neverzované soubory, takže i kdyby samotná složka public/images byla verzovaná, uživatelská data se nesmažou. Ale jasně, hard reset je riziko. Pokud ale všechno verzujem, nemají se jak soubory změnit, takže git reset je spíš jako jistota, že půjde dát pull a bez mergování.

      Na produkci mám vždy git config core.filemode false, to potom git práva ignoruje. (http://stackoverflow.com/questions/1580596/how-do-i-make-git-ignore-mode-changes-chmod) Je mimochodem dobré tohle pouštet v pre-deploy, jenom pro jistotu :)

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=8200