Workflow vývoje Joomla webů a verzování GIT

leos
11. led 2020 20:25 #141483
Ahoj vespolek,
měl bych dotaz na místní vývojáře a stavitele webů:

Chtěl bych pojmout moderně vývoj svých webů postavených na Joomle tak abych měl kompletní vývoj pouze na localhostu s možností verzování v Gitu. Potom co web dodělám a odskouším, použiju ftp-deployment na zkušební hosting, kde si ověřím plnou funkčnost na hostingu a následně web nahodím na ostrý live hosting.

Napadá mě spousta otázek jak to dělat ale základní otázka je tato:

Verzujete na localhostu kompletní instalaci joomly nebo pouze její části? Když části, tak jaké? Jen šablony?

Moc díky za vaše názory, nápady a informace.

Leoš

ENZO Software - webdesign, šablony, grafika ...

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od H13
11. led 2020 21:22 #141484
Ahoj,

jde o to, jestli ti při vývoji nějak verzování pomůže? Předpokládám, že máš na mysli verzování změn při vývoji kompletního webu.

Dokážu si představit, že někteří lidi využijí verzování např. při modifikaci něčeho (komponent, šablony, ...), co vytvořil někdo jiný. Když si někdo dělá vlastní modifikace, např. v komponentě nebo šabloně, rád ví, jaké externí vývojař udělal v každém souboru změny, tak, aby se mohl věnovat jen oblastem, ve kterých má změny. Ale verzovat pro vlastní potřebu, jak často?

Nedokážu si představit, že bych pro někoho dělal web, on by měl upozornil, že např. něco nesedí v nějaké části designu, já bych upravil CSS a hned bych změny označil - verzoval. Pokud by někde nastal v budoucnosti konflikt, pomohlo by mi, že to vše mám odverzované a řešil bych konflikt pomocí nahlížení do jednotlivých "verzí" nebo bych ho prostě rovnou řešil na aktuální verzi, bez ohledu na historii?

Opravdu těžko říct. Když už verzovat, jakou hranici pro verzování vybrat (časovou, práce na jendotlivých oddílech, velikost provedených změn, ...) ???

Phoca Gallery - http://www.phoca.cz/phocagallery - obrázková galerie (Joomla!)
Phoca Guestbook - http://www.phoca.cz/phocaguestbook - kniha návštěv (Joomla!)
Phoca Download - http://www.phoca.cz/phocadownload - stahování souborů (Joomla!)
Phoca Cart - http://www.phoca.cz/phocacart - e-shop,...

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Bong
11. led 2020 23:02 - 11. led 2020 23:28 #141485
V případě běžné stavby webu je to podle mého jen další práce pro práci.

Normálně se web postavený na Joomle skládá:

  • složky a soubory Joomly a nainstalovaných rozšíření
  • override souborů výstupů z Joomly a rozšíření (ty mají být správně ve složkách použité šablony)
  • soubory na které je odkazováno z obsahu (obrázky, videa, soubory ke stažení,...)
  • databáze obsahu webu Joomly (většina nastavení, články, uživatelé, moduly, položky menu, obsah rozšíření,...)

Složky a soubory uživatelsky neměníte, při upgrade (downgrade) stejně o změny přijdete.
Override souborů výstupů a celé šablony, soubory obsahu a databázi je dobré zálohovat. Zpravidla všechny najdete ve složce images, některá rozšíření mohou mít svoje speciální složky ukládání (třeba komponenty stahování, galerie, shopy,...). Vzhled a rozvržení, úpravy výstupu jsou ve složce použité šablony.

Pro zálohování a tedy i verzování celkové nebo určitých oblastí, ale bohatě postačuje použít třeba Akeeba Backup. Tam si v případně můžete nastavit různé typy zálohování podle potřeby. Navíc pak přesun stránek pomocí Akeeba Backup z local na web (web na local, z webu na web,...) je jednoduchý, rychlý a hlavně spolehlivý.

Joomla také obsahuje nástroje: Záznam činností uživatele a Verzování (důležité u článků). A to je podle mě to, co hlavně potřebujete. To lze zapnout jak pro práci v Joomla, tak i pro některá rozšíření, která verzování nebo záznam činností podporují.
Vrátit se do nějakého bodu, nebo do něj jen nahlédnout je rychlé, efektivní a nic podobného vám žádný externí nástroj neumožní.

I'm sorry, my responses are limited...you must ask the right questions.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Rudolf
11. led 2020 23:45 - 12. led 2020 00:00 #141486
Děkuji že jste položil tento dotaz.

Jak se zdá, je vidět, že stejně jako většina programátorů co pro mě kdy pracovala (a přesvědčovala že jejich systém je nejlepší, nejrychleší a vůbec), jsou i ostatní z joomla prostředí v české republice zvyklí pracovat jen na localhost (maximálně verzovat změny pomocí interního systému jednotlivého pracovníka v netbeans nebo phpstorm na lokální počítač každého pracovníka samostatně) a následně změny kopírovat na ftp.

My jsme to dělali od roku 2011 (a nadále v tom pokračujeme) úplně jinak.

- Celý web (původně i DB, nyní bez DP a bez fotek) verzujeme pomocí gitlabu (ještě předtím než byl, tak pomocí interního systému git).
- Každé issues (úkol v systému redmine nebo easyredmine nebo jira) má vlastní branch a do ní programátoři a kodéři umísťují změny.
- Následně vedoucí programátor nebo ten kdo otestuje a schválí funkcionalitu úprav a má práva provede merge a nasadí úpravy do vývojové branch (devel) a nakopíruje na vývojovou verzi webu na ftp.
- Následně projektový manager projde úpravy a otestuje s klientem a nechá schválit
- Následně jsou úpravy zmergovány do produkční verze webu (master) a nasazeny na produkční verzi hostingu (ftp).
- Všechny změny v kódu jsou navíc označeny ID issues v systému redmine, aby se daly dohledat - popis, zadání, průběh, korektury a porovnat s původním kódem
- Seznam změn se pak archivuje pro případný upgrade

Tohle se opakuje neustále dokud není celý web dokončený :)

V případě exponovaných webů a eshopů ještě existuje mezistupeň - stage - který je přesná kopie produkčního webu a slouží k odladění funkcioanlity, kdy je nutné překlápět změny za chodu (jak jsem psal, jde o oexponované a VIP projekty).

Takže máme ve výsledku v gitu 3 hlavní branch:
- devel
- stage
- master

a tři vytvořené domény pro jeden projekt.

Tímto systémem je:
- neustálá kontrola nad celým procesem změn všech pracovníků
- nejsme závislí na jednotlivých pracovnících (při odchodu z firmy, výpadku, ukončení spolupráce)
- zákazník je součástí procesu a může průběžně kontrolovat nasazení změn a schvalovat - je součástí vývojového týmu a porad
- případné kolize se dají vyhledat, systém také slouží k zjištění kde nastala chyba při vývoji nebo nasazení a kdo ji z pracovníků udělal nebo zda došlo k chybnému zadání ze strany zákazníka (tohle již může dělat jen support manager na helpdesku při případném požadavku od zákazníka a není třeba používat programátora)

Tento systém jsem bohužel nevymyslel, jen jsem dotáhl během 3 let k dokonalosti a použití pro Joomla/wordpress a práci v týmu externistů, protože na stejném systému pracují kolegové například na eshopu pro Vodafone.

Pro použití tohoto systému je potřeba
- několik přesně daných software (pro PC nebo mac) a nastavení
- přesně dané postupy a bezpečnostní přístupy
- lidi, kteří znají systém práce s gitem (pull, push, fetch, merge a řešení konfliktů) a mají vše odladěno i na localhostu
- nadefinovaný systém gitlab (uživatelé, přístupy..)
- přizpůsobené přístupy na hosting

Podobný systém používáme při vývoji aplikací a rozšíření, tam se ale systém liší v použití branch (devel, master, hotfix, features, J25. J3).

Volbu jakým systémem ve firmě pracovat nechávám na každém samostatně.

Kolegové od Vodafonu používají Jiru a Mercurial, kolegové z Nette používají Redmine a Mercurial, my na Joomla používáme EasyRedmine/Redmine/Jiru a Gitlab.

No a nyní přímo k dotazu:

- neverzujeme DB - ta se ukládá 3 měsíce do backupu
- neverzujeme složky images, cache, logs a další podle typu webu
- neverzujeme dynamické soubory
- verzujeme vše ostatní

Rudolf

P.S.
Myslím že podobným systémem se pracuje při vývoji Joomla jako takové, jen používají Git.

MiniJoomla! - www.minijoomla.org - eshop s rozšířením Joomla/VM
Email Manager - aplikace na správu šablon emailů pro VirtueMart
Easy Feeder - aplikace na generování XML/CSV feedů a napojení na ERP pro VM
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od H13
12. led 2020 00:14 - 12. led 2020 00:14 #141487
Samozřejmě, že pokud se pracuje v týmu, je to nezbytnost.

Z prvního příspěvku to vypadá na to, že jde spíše a práci jednotlivce a jak píše Bong, při práci jednotlivce je dobré zvážit, zda to nebude "další práce pro práci". Samozřejmě se nebavíme o zálohování, to je prostě nutnost, nastavit si nějaký harmonogram zálohování a záleží na každém, zda to bude nějaký jednoduchý proces zálohy nebo komplexní a systematické verzování včetně detailního popisu změn.

Phoca Gallery - http://www.phoca.cz/phocagallery - obrázková galerie (Joomla!)
Phoca Guestbook - http://www.phoca.cz/phocaguestbook - kniha návštěv (Joomla!)
Phoca Download - http://www.phoca.cz/phocadownload - stahování souborů (Joomla!)
Phoca Cart - http://www.phoca.cz/phocacart - e-shop,...

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Rudolf
12. led 2020 00:39 #141488
Myslím že základní dotaz je proč chcete verzovat úpravy na webu (verzovat jen pro verzování je nesmysl):

- co tím sledujete a co očekáváte že Vám to přinese

Podle odpovědi se dají nadefinovat metody jaké je možné použít a které ve výsledku odpovídají požadavku.

MiniJoomla! - www.minijoomla.org - eshop s rozšířením Joomla/VM
Email Manager - aplikace na správu šablon emailů pro VirtueMart
Easy Feeder - aplikace na generování XML/CSV feedů a napojení na ERP pro VM
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
13. led 2020 13:10 #141493
Rudo, jak řešíte instalaci rozšíření / aktualizaci Joomly apod.? Když např. doinstaluji komponentu, tak se sice změní hromady kódu, ale hlavně jsou to změny v databázi. Takže pokud ten tester také nespustí instalaci, nebo jinak neaktualizuje databázi, tak je v git sice hromada nových souborů, ale v podstatě k ničemu, protože se v Joomle neprojeví...

Řešil jsem kdysi staging na jedné Joomle, představa byla taková, že aktualizace a změny se provedou na dev site, a pak jen záměnou docker kontejnerů se nasadí na live site, ale vzhledem k složitosti instalací rozšíření jsme to nakonec opustili, aktualizační skript by toho prostě musel obsahovat strašně moc, nehledě k tomu, že by musel obsahovat SQL např. pro přidání položek menu apod.

Chápu použití git pro jednotlivá rozšíření, šablony apod. verzovat celou Joomlu mi přijde docela overkill...

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Rudolf
13. led 2020 13:41 #141494
Cony,

Rudo, jak řešíte instalaci rozšíření / aktualizaci Joomly apod.?


Řešíme jako samostatnou branch aktualizace. Ta jede průběžně a do ní se vkládají instalace. Průběžně se také merguje z master.

Před spuštěním produkce stačí jen mergovat do master a devel, následně se překlopí celá DB.
Po spuštění produkce se provádí manuální instalace nejprve v branch aktualizace na vývojovém webu (FTP == propíše se i do DB) a následně po zmergování do devel a master, se provede:

- pull master na ftp produkce
- manuální instalace stejných aktualizací

Výsledkem jsou na ftp stejné soubory jako v master, které nevytvoří nutnost commitu.
Co je dynamického se negituje (např. některé soubory akeeba)

Tohle je důležité, protože při aktualizaci je provést také vyřešení konfliktů == my upravujeme Virtuemart asi na 50 místech v core, joomla na 2-3 místech (podle typu webu), o ostatních aplikacích nemluvím.

Ze začátku jsem si nebyl jistý jestli to bude fungovat a požadoval jsem od programátorů vymyslet přírůstky v DB a gitovat i tyto změny, ale protože celý systém jsem musel vymyslet sám a otestovat a tu mysql opravdu neumím a kluci na hostingu nebyli za 7 let schopni tento systém vymyslet, jedeme tímto způsobem.

Rád bych měl ale lepší systém, jako používají kolegové při vývoji eshopu Vodafone. Používají konfigurační soubory (YAML), takže jsou schopni z PHPStormu přímo spouštět synchronizace a vytvářet branch v gitlabu včetně kontroly kvality kódu (joomla, virtuemart, less soubory).

Bohužel v prostředí programátorů joomla v CZ je tohle jen moje zbožné přání a žádný z programátorů, kteří pro mě pracovali, tohle neumí. Většinu jsem musel učit já jako neprogramátor :)

Co se týká DOCKER for Joomla, na ten se chystáme tento rok (moc ho ještě neumíme :))). Chceme ho nasadit pro naše klienty, zatím využíváme jen oddělené vhosty z důvodu bezpečnosti
Stage děláme jako samostatnou branch, která jede na dalším hostingu.
Docker se bude tedy teprve vyvíjet (snad).

Také chceme naprogramovat nový Elastic Seach pro Virtuemart a Joomla (kdysi jsme použili existující řešení a nasadili na VirtueMart a použili Amazon DB. Účet byl tak mastný, že po 3 měsících jsme ho vypnuli) a nové filtrování pro VirtueMart. Aspoň jsem to v prosinci zadával programátorovi, že tohle bude hlavní práce na tento rok.

Aktuálně jsme na filtrování pro kolo-park.cz (přeprogramované CF Filtering) strávili 80 programových hodin (bez testování a stylování) == 6 měsíců práce junior programátora Joomla a senior programátora Virtuemart.

MiniJoomla! - www.minijoomla.org - eshop s rozšířením Joomla/VM
Email Manager - aplikace na správu šablon emailů pro VirtueMart
Easy Feeder - aplikace na generování XML/CSV feedů a napojení na ERP pro VM
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Rudolf
13. led 2020 14:01 #141495
No a ještě máme na jednoduchých webech nasazenou automatiku aktualizací.

Cože je super, jen mi přijde email:
- aktualizován JCE
- aktualizováno RSForm
- aktualizováno RSFirewall

O nic se nestarám, nic neinstaluji, nic nestahuji jen na konci roku zákazníkovi vyúčtuji roční aktualizace a licence.

MiniJoomla! - www.minijoomla.org - eshop s rozšířením Joomla/VM
Email Manager - aplikace na správu šablon emailů pro VirtueMart
Easy Feeder - aplikace na generování XML/CSV feedů a napojení na ERP pro VM
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
13. led 2020 16:06 #141496
Aha, takže jestli to chápu, tak je to opravdu jen pro vývoj, protože se nepočítá s tím, že se mezitím změní DB na produkčním webu.

Aktualizace pomocí nějakých konfiguráků by byla krásná, ale když jsem to zkoumal, narážel jsem právě na
1/ instalaci 3rd party rozšíření - instálátory nejsou jednotné, v podstatě bych musel vždy rozpitvat instalátor a udělat z něj nějaký doplňkový skript pro upgrade.
2/ změny v administraci DEV (např. přidání nové položky v menu) - pokud se nemá překlápět celá DB, ale jen rozdíly, musel by se opět vymyslet nějaký rozdílový skript, který by změny reflektoval.

S Dockerem jsem si chvíli hrál, ale zatím ho zavrhl, protože neumí běžet současně s VMWare, který dost nutně potřebuju.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Rudolf
13. led 2020 16:14 #141497

protože se nepočítá s tím, že se mezitím změní DB na produkčním webu.


Počítá :)

Při určitém stavu nekonzistentnosti se zmerguje master do develu (mimochodem to by se mělo dělat pravidelně po nasazení várky úprav == úkolů == branches) se také MANUALNE zkopíruje DB z master na devel, se všema náležitostma (rozdílné configy, co se ukládají do DB, v našem případě OPC)

A jede se dále....

Oddělení DB a Gitu má svou jednu výhodu - úpravy můžete gitovat i při nekonzistentosti DB :)

MiniJoomla! - www.minijoomla.org - eshop s rozšířením Joomla/VM
Email Manager - aplikace na správu šablon emailů pro VirtueMart
Easy Feeder - aplikace na generování XML/CSV feedů a napojení na ERP pro VM
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od H13
13. led 2020 16:22 - 13. led 2020 16:23 #141498
Jinak ještě všeobecně k těmo automatickým procesům. Jak to popisuješ, tak to vypadá skvěle, bohužel v praxi to někdy dře, protože ne všichni jsou ochotni pracovat tímto způsobem. Je to také například důvod, proč ještě není hotová Joomla! 4. Mnoho vývojářů právě díky tomuto přestalo přispívat kódem, v podstatě většina testerů přestala testovat, protože prostě nebyli schopni tyto procesy ovládnout (a to můžeme říct, že nainstalovat composer, node.js, npm apod. je triviální).

A není to jen o lidech, kteří tomu nerozumí nebo to nechtějí používat. Naposledy takto přestal přispívat jeden velmi významný přispěvatel, když mu ESlint nepovolil přispět kvůli nějakému nesmyslnému pravidlu v Javascript kódě.

Phoca Gallery - http://www.phoca.cz/phocagallery - obrázková galerie (Joomla!)
Phoca Guestbook - http://www.phoca.cz/phocaguestbook - kniha návštěv (Joomla!)
Phoca Download - http://www.phoca.cz/phocadownload - stahování souborů (Joomla!)
Phoca Cart - http://www.phoca.cz/phocacart - e-shop,...

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od leos
13. led 2020 16:52 #141499
Ahoj kluci,
moc vám všem děkuji za zapojení do diskuze. Vysvětlení je opravdu výživné.
Ano, jsem jednotlivec dělající weby. Jen jsem chtěl konzultovat právě verzování do GITu. Hlavně pro přehled všech změn kódu, který jsem udělal. Už po půl roce si nepamatuji proč, kde ale kouknu do repozitáře a mám tam okomentované změny.
Verzování obsahu článků je super pomocí samotné Joomly, to je fakt. Override souborů je také samozřejmost.

Z toho všeho mi vyplývá, že by stačilo hodit do GITu poprvé celou Joomlu se vším rozšířením a potom už si verzovat do GITu jen co je potřeba.
Databázi zálohuji pravidelně po každé změně, která ji ovlivní. Manuálně pomocí PhpMyAdmina.

Nějaké velké zásahy do core kódu nedělám, spíše jen frontend. To verzování mám i jako jednu z forem zálohy.

Je hodně zajímavé sledovat, jak to každý dělá trochu jinak :-) A je to i poučné.
Dík moc a kdyby měl někdo ještě nějaký tip, neváhejte se mi svěřit :-)

ENZO Software - webdesign, šablony, grafika ...

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Rudolf
13. led 2020 17:07 - 13. led 2020 17:34 #141500

Z toho všeho mi vyplývá, že by stačilo hodit do GITu poprvé celou Joomlu se vším rozšířením a potom už si verzovat do GITu jen co je potřeba.


Ano.¨
Dnes mi programátor doprogramoval úpravu naši pro discontinued produkty pro plugin catproduct-content (vypadá to že vývojáři skončili, tak to bude asi další rozšíření, které převezmeme a budeme rozvíjet) a core plugin VirtueMartu - generická varianta productu (Customfield typu A).

Protože úkol má číslo 17013,
- v gitu si vytvořil z mastera branch - 17013
- do ní commitnul změny s poznámkou - 17013 - discontinued v catproduct (vmcustom) + customfield(type A)
- v kódu označil změny - // #17013 - discontinued product
- udělal screen po nasazení
- přidal URL testovacího produktu po úpravě == že to funguje, aby testér mohl otestovat
- odeslal úpravu do gitu
- vložil do poznámky v úkolu URL commitu, abych si prohlédl kód nebo jiný programátor a zkontroloval

Jakmile schválím výsledek:
- udělám merge do branch devel a nasadím na vývoj, kde to již zkontroluje zákazník.
- následně merge do master a nasazení na ftp produkce
- vyfakturuji :)

Celkem programátorovi přibyla práce v řádu 1-2 minuty aby takto postupoval + zápis do úkolu (to by ale musel dělat tak jako tak).

Jakmile si takto zvyknou kolegové pracovat, již nic neřeší, protože to následně ušetří mnoho hodin práce při chybách nebo dalších úpravách.

P.S.
Mimochodem,celý tento dotaz v kostce byla plánovaná přednáška, kterou jsem chtěl udělat v Olomouci (pokud tam někdy tedy dorazím :)

Obrovská výhoda tohoto postupu je ta, že následně na další eshop prostě vezmu všechny úpravy v branch Discontinued a nasadím na další eshop (to už mohu nasazovat já jako admin a ne programátor).

MiniJoomla! - www.minijoomla.org - eshop s rozšířením Joomla/VM
Email Manager - aplikace na správu šablon emailů pro VirtueMart
Easy Feeder - aplikace na generování XML/CSV feedů a napojení na ERP pro VM
PragueClassicconcert - portál pro prodej vstupenek na systému Joomla

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od H13
13. led 2020 17:20 #141501

Mimochodem,celý tento dotaz v kostce byla plánovaná přednáška, kterou jsem chtěl udělat v Olomouci (pokud tam někdy tedy dorazím


Je to celkem jednoduchý, stačí se vyhnout D1 :-)

Phoca Gallery - http://www.phoca.cz/phocagallery - obrázková galerie (Joomla!)
Phoca Guestbook - http://www.phoca.cz/phocaguestbook - kniha návštěv (Joomla!)
Phoca Download - http://www.phoca.cz/phocadownload - stahování souborů (Joomla!)
Phoca Cart - http://www.phoca.cz/phocacart - e-shop,...

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.