Automatický deployment Nette aplikací

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Marsme
Člen | 75
+
0
-

Zdravím,

přemýšlím jak se při vývoji posunout zase o kousek dál. Hledám nástroj který bych mohl použít při deploymentu Nette aplikací. Samozřejmě hledám nějaký automatický způsob (NE knihovnu FTP deployment od DG). Za všechny návrhy a vaše zkušenosti s němi budu rád.

David Ďurika
Člen | 328
+
0
-

jak to myslis ? co ti nevyhovuje na DG deploymente? co takto pouzit git?

Marsme
Člen | 75
+
0
-

Hledám nějaký nástroj který před nahráním verze na produkční server spustí testy, minifikuje js a css. Git samozřejmě používáme. Nechci používat knihovnu DG protože se mi nelíbí FTP a nemyslím si že to je ta správná cesta jak nasazovat verze na produkci.

jiri.pudil
Nette Blogger | 1032
+
0
-

Když používáte Git, co takhle navěsit test runner a minifier js a css na produkci jako pre-receive hooky?

Marsme
Člen | 75
+
0
-

jiri.pudil napsal(a):

Když používáte Git, co takhle navěsit test runner a minifier js a css na produkci jako pre-receive hooky?

A co automatické spouštění testů při nasazování do produkce?

enumag
Člen | 2118
+
0
-

@Marsme: Ještě jsem neměl čas to u sebe zprovoznit, ale chci zkusit GitLab CI.

bazo
Člen | 620
+
0
-

shameless plug:

nechcel by si vyskusat a otestovat tento nastroj? https://github.com/bazo/deployer
funguje to na podobnom principe ako napr pagodabox – vytvori sa novy repozitar do ktoreho mozes pushovat,
ak si nastavis automaticky deploy tak pri kazdom pushi sa to nasadi
pripadne je moznost vyberat so ktory commit chces nasadit
podporuje to aj hooky

enumag
Člen | 2118
+
0
-

@bazo: To vypadá zajímavě, ale potřeboval bych správu repozitářů ponechat GitLabu a touhle aplikací řešit jen deployment (GitLab umí po pushi posílat upozornění na libovolnou URL). Tzn. potřeboval bych si tohle buď přiohnout anebo spíš z toho vypreparovat ty věci co se týkají deploymentu. Budu si muset zjistit k čemu mne zavazuje ta GNU GPL licence.

bazo
Člen | 620
+
0
-

tato appka nema nahradit spravu repozitarov, ten git repozitar je tam z toho dovodu aby si mal oddeleny hlavny repozitar od deployovacieho. ja mam napr zdroajky na bitbuckete. takze mam dve remotes v gite: origin a production. do originu maju pravo pushovat aj ini vyvojari, ale nechcem aby mali moznost spustat automaticky deploy.

zatial je umiestnenie repozitarov dane napevno, ale planujem pridat moznost si definovat vlastne.

slo by to naviazat aj na webhook, kedze pri deployi sa repo vzdy klonuje. v tomto pripade by si nemal historiu commitov.

je to zatial prisposobene mojim potrebam, ale nebranim sa rozsirovaniu, aby to bolo trosku univerzalnejsie

enumag
Člen | 2118
+
0
-

@bazo: No moc se mi kvůli tomu nechce instalovat mongodb… Ty repozitáře tak jak říkáš sice dávají smysl, ale já to mám vymyšlené ještě trochu jinak. Dva remote repozitáře mít nepotřebuji, GitLab umožňuje některé branche označit jako protected, čímž bych ostatním zabránil i deploy. Tzn. spíše budu muset tvé řešení oholit než rozšířit. ;-)

mkoubik
Člen | 728
+
0
-

Rozhodně doporučuju capistrano, v případě zájmu můžu hodit někam na github tasky pro nette, doctrine apod.

JakubJarabica
Gold Partner | 184
+
0
-

@mkoubik: Minimálne mňa by si tým veľmi potešil.

enumag
Člen | 2118
+
0
-

@mkoubik: Zájem určitě mám. ;-)

mkoubik
Člen | 728
+
0
-

https://gist.github.com/…2f79f67f18d2

Tasky:

  • run_tests si doplňte podle toho co používáte
  • newrelic_deployment pokud používáte, nezapomeňte vyplnit appname a apikey v config/application.rb
  • push_deploy_tag otaguje release v gitu, takže je dohledatelný i po force-push
  • restart jen maže temp
  • finalize_update nastavuje zápis do požadovaných adresářů a vytváří symlinky na shared adresáře
  • migrate spouští doctrine migrace
  • web:disable a web:enable přepíná maintenance mód, se současným sandboxem nefunguje, upravte si index.php aby requiroval system/maintenance.html jen když existuje
  • default si poskládejte jak potřebujete, třeba si tam můžete přidat web:disable před update a web:enable po restart.

Edit: je to taková splácanina defaultních tasků a nově napsaných, tak to berte spíš pro inspiraci. Asi by neškodilo to celý přepsat.

Editoval mkoubik (8. 7. 2013 19:31)