Portál AbcLinuxu, 4. května 2025 15:37
Zdravim,
zdedil jsem jednu apku v PHP (po odeslych programatorech) a resim, jak zautomatizovat deployment kodu do produkce (pro novy server, na ktery se bude migrovat). Kod je zatim v SVN, ale planuji prestehovat do GITu (resp. on-premise gitlabu).
Produkcni server je klasicke kombo NGINX/PHP-FPM/MARIADB, kde ma kazdy "zakaznik" vlastni instanci, tj:
* vlastni (sub)domenu/www-root
* vlastni kod (vetsinou stejny mezi instancemi, ale pro testovani se nekdy pouziva kod z jine revize/branche)
* vlastni DB (postavenou z "migrations" skriptu)
Hledam teda nastroj, ktery umi "snadno":
1) vytvorit/upravit NGINX konfigurak pro novy/stavajici VirtualHost
2) nasadit do daneho www-rootu/domeny kod z SVN/GIT (e.g. revize/branche 12345xyz)
3) vytvorit prazdnou DB a spustit "migrations" skripty
bohuzel jsem nic moc pouzitelneho nenasel (mozna prehledl).
Jak provadite deployment u podobnych projektu? Nechce se mi verit, ze to vsichni bastli svymi vlastnimi skripty (navesenymi do SVN/GIT hooku apod.), nebo pouzivaji vice nezavislych nastroju (pro nginx, pro GIT/SVN, pro DB). Koukal jsem na Gitlab CI, ale to mi pripada, ze je spise na "testovani" kodu, nez na deployment na server...
Predem diky za pripadne nasmerovani/doporuceni.
+1
Poslední dobrou se často setkávám s jakýmsi náboženstvím (nebo jak to nazvat), že by na všechno měl existovat nějaký dedikovaný nástroj, který danou činnost „usnadní“.
Spousta nástrojů, frameworků a knihoven často ale práci spíš přidělávají – zejména pokud se použijí na menší úkoly, než pro jaké byly navržené.
Ano, pro hromadné nasazování existuje třeba Ansible, Puppet, CFE a další. Na automatizované úpravy konfiguráků zase Augeas. Ale zrovna to, co chce tazatel, bych řešil pomocí Bashe a SSH.
Nechce se mi verit, ze to vsichni bastli svymi vlastnimi skripty
Na tom není nic neuvěřitelného a často je to nejlepší volba. Bash je přesně nástroj pro úlohy typu „potřebuji něco někam nakopírovat“ nebo „potřebuji spustit příkaz XY“. Pokud je někomu bližší třeba Perl nebo Python, udělá v nich totéž, jako v tom Bashi.
make deploya potřebné závislosti mám ukryty v
Makefile
. Výhodou je, že jsou hezky pohromadě, sdílené s ostatními požadavky (DRY) a že se přes to dobře spouští generátory.
Makefile
nachází hlavně ty vlastní parametry a že jsou přehledně koncentrovány do jednoho souboru. U větších projektů je možné totéž udělat v každém podadresáři a spouštět rekurzívně do hloubky.
V tom Makefile mám všechny potřebné utility, včetně spouštění testů, generování závislostí, deploymentu či mazání cache. Na tu obrazovku se to skutečně vejde.
Hodně utilit však spouštím i přes Git. Má to trochu jiné vlastnosti, například že se úlohy spouští v kořeni projektu.
Jsou to hlavně skripty, které jsou univerzálně použitelné v každém projektu a mohou tedy být umístěny v ~/.gitconfig
Make může spouštět Git a Git může spouštět Make. Jen je dobré si z těchto dvou přístupů vybrat a nemíchat je.
Jedinou nevýhodou Make je závislost na platformě, což může u některých projektů představovat problém. V takovém případě dám Makefile do .git/info/exclude
a neverzuji ho.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.