Üdv!
PHP web development-re használt IntelliJ IDEA-t szeretném koppra lecserélni open-source szoftverekkel, Linux oprendszeren. Az editor részére bőven elég VSCode, vagy Vim, ezzel nincs gond, MySQL-re DBeaver, ezek pipálva. Viszont a deployment feature-je nagyon szofisztikált és nehezen találok megfelelő alternatívát.
- A workflow-om IDEA-ban:
- Külön Git branch-ben megvalósítom amit kell
- IDEA Git log-ban kijelölöm a teljes branch-et, pontosabban az azon belül módosult fájlokat
- Deployment -> Sync with FTP server * A branch-ben módosult fájlokat feltöltés előtt össze tudom hasonlítani a szerveren lévő verziókkal
- Ha valami miatt a szerveren van egy módosítás, amit a lokális fájlokban nincs jelen, akkor inplace tudom alakítani a kódot
A feltöltő felület így néz ki, csak nem könyvtárakat hasonlítok össze, hanem a branch-ben változott fájlokat: https://www.jetbrains.com/help/idea/comparing-deployed-files-and-folder…
Biztos vagyok benne, hogy ennél lenne jobb workflow is, de per pill ez működik. A kérdésem az, hogy miként tudom ezt megvalósítani egyéb software-ekkel?
Odáig eljutottam, hogy Linux-ban az FTP szerverhez úgy tudok csatlakozni, hogy az egy ugyanolyan könyvtárként jelenik meg a gépemen, mint bármely másik (gio mount ftp://.../), tehát parancssorból is elérem, így tudok rá script-et írni. Az is megvalósítható, hogy a branch-ben változott fájlokat összehasonlítsam a szerverrel:
for f in `git diff --name-only master...`; do remote_f=/run/user/1000/gvfs/ftp.../$f if ! ( diff -rq $remote_f $f ); then code --wait --diff $remote_f $f fi done
Ez végigmegy a branch-ben változott fájlokon és összehasonlítja őket a szerveren levővel, inplace tudom módosítani a fájlokat. Már majdnem tökéletes, viszont valamikor csak ellenőrizni akarom, hogy az szerveren lévő fájlok nem-e újabbak, mint a helyiek, ez esetben felesleges a diff, csak ki szeretném jelölni, hogy fel akarom őket küldeni. Erre egy grafikus összehasonlító program (pl. Meld) megfelelne, viszont azok egyikénél se találtam olyan lehetőséget, hogy csak a megadott fájlokat hasonlítsa össze; vagy két fájlt, vagy két könyvtárat tudok megadni paraméterként, de nincs rá lehetőség, hogy egy fájllistát (a branch fájljait) hasonlítsa össze.
Tudtok erre megoldást?
Részben kapcsolódó kérdés
Mostanában ismertem meg a `gio mount`-ot és nagyon rugalmas megoldásnak érzem, hogy parancssorról is elérhető módon tudok kapcsolódni FTP-hez, SAMBA-hoz, egyéb cloud cuccokhoz, valamint hogy ezeket a könyvtárakat ugyan úgy tudom használni, mint bármely másikat. Annyi hátrányát látom csak, hogy
- Kicsit macerás az elérési útvonal (/run/user/1000/gvfs/...), bár ez symlink-el megoldható, de úgy tűnik, mintha nem kifejezetten terminálos használatra tervezték volna
- A GVFS lassabbnak tűnik, mint a natív FTP kapcsolat (Midnight Commander-ben tesztelve)
Vannak már modernebb alternatívái, vagy okés így, ahogy használom? Vagy terminálból hogy érdemes remote server-hez kapcsolódni?
- 338 megtekintés
Hozzászólások
Én inkább az lftp mirror módját nézném meg.
- A hozzászóláshoz be kell jelentkezni
Mas modositgatja a szerveren a fileokat, vagy az is te vagy?
Ha nem te vagy egyedül akkor probald meg a tobbieket is rávenni hogy ugyan abba a git repoba dolgozzatok es a menjen a deployment automatikusan egy "deployment" branch-bol git hook segitsegevel, igy nem kellene ftp-vel szarakodni.
Nalunk a következő valt be, git repon "production" branch kerül a szerverre. Master branch a development.
Mindenki lokalis forkon dolgozik es pull requesteket kuld a valtozasokkal. Mielőtt pull requestet kuldesz természetesen local merge-t csinal mindenki es ott megoldja a forkja es a kozponti kod kozti eltereseket (merge conflict).
A deploymentet nalunk jenkins vegzi ahol a deployment branch post commit hook-ja triggereli a jenkins pipelinet. (Checkout production branch, copy production config files in place, aztan a "kesz" directory megy a szerverre)
De egyebkent nézz utána ci/cd temakornek.
Support Slackware: https://paypal.me/volkerdi
- A hozzászóláshoz be kell jelentkezni
Köszi a tippet, ez lesz a normális megoldás.
Egyébként miért van külön master és production? Naponta egyszer toltok deploy-t, vagy hasonló okok miatt?
- A hozzászóláshoz be kell jelentkezni
Mindenki tolja a cuccot masterbe, release előtt snapshot a production branchre, hogy vissza lehessen követni, mikor mi ment ki.
vizuálisan: https://trunkbaseddevelopment.com/
- A hozzászóláshoz be kell jelentkezni
Rendesen a fejlesztő feature branch-én dolgozik, engedéllyel vagy vezető által megy development-be a commit. Onnan tervezetten a masterbe, ahonnan lehet user-teszteket csinálni. Prodba pedig másként tervezetten mennek a master commitot vagy developer cherrypick-ek. Ha bátor valaki, akkor onnan lehet autodeploy webhook-kal éles rendszerre. Bluegreen nem baj ha van, késlelteti az összeomlását.
Nagy mellennyel beszélek, de fel éve nem tudtam hogy ez létezik.
- A hozzászóláshoz be kell jelentkezni
Ofc masterbe pull requesttel megy a cucc, nem committal, mielőtt valaki félreértené :)
- A hozzászóláshoz be kell jelentkezni
A masteren dolgozó fejlesztők a branchtelen brigantik :-)
- A hozzászóláshoz be kell jelentkezni
A fejlesztes a masteren megy, de ha pl valami kicsi bug van akkor azt lehet a production-be javitani anélkül hogy.mondjuk.a.felkesz uj fetaure-t kellene beolvasztani.
Egyebkent gogs-t használunk ugymond szegény ember githubja-kent :)
Support Slackware: https://paypal.me/volkerdi
- A hozzászóláshoz be kell jelentkezni
Vajon milyen commit terhelés mellett lesz fizetős a github? Eddig nem futottam bele a fizetési igényükbe. Mondjuk sajna így jogosulsagok sincsenek csak organization szintű, repo-t latja/nemlatja működés.
- A hozzászóláshoz be kell jelentkezni
A cégnek valami olyan konstrukcioja van ami 25 usert enged, de foggalmam sincs,hogy milyen egyeb korlat van meg, vagy van-e egyáltalán.
Gogs-t olyan projektre hasznalok amit a cegen belül kell hostolni. (Gitea jobbnak tűnik, de nekünk boven eleg a gogs)
Support Slackware: https://paypal.me/volkerdi
- A hozzászóláshoz be kell jelentkezni
Ha van egy user, aki nem hajlando gitbe kommitolni: kommitold be te gitbe amit csinált, megjelölve, hogy onnan jött. Tehát a deployment állapota is egy branch legyen! Innentől ugyanazokkal az eszközökkel kezeled mint minden mást! Lokálisan git difftool -d, szerverre pedig gitlab, ami FOSS saját szerveren hosztolt github clone.
- A hozzászóláshoz be kell jelentkezni
Szia!
Lehet felreertem a kerdesedet, de szerintem az a normalis, ha mindenki kulon branch-be dolgozik feature-onkent. Lehetoleg ugy, hogy egy commit egy dolgot csinaljon, de azt jol, vagy ha tobbet, akkor legyen atlathato changelog. Push elott lefutnak az automata tesztek, ha pedig minden klappol, akkor bemegy a biztosan mukodokepes kod a sajat branch-be. onnan meg ami tuti jo, az olvaszthato a main-be. Utana meg a main lehuzhato egy sajat gepre es git-ftp-vel eljuttathato a sajat szerverre. 2021-ben FTP-zni elegge gaz mondjuk szerintem.
Udv.
- A hozzászóláshoz be kell jelentkezni
Eddig nem tudtam, hogy gáz, ezért használtam FTP-t. :D Nem volt még más developer a cégnél, ezért eddig nem tudtam, mit csinálok rosszul, de igencsak úgy tűnik, hogy az FTP-s ökörködést el kell felejteni (mikor végre nagy nehezen a közelébe kerültem a saját megvalósításnak), helyette automata deploy-t kell használni, ez már tisztán látszik.
- A hozzászóláshoz be kell jelentkezni
Az FTP vagy samba share mappakon való közös munkát mindenképp git-re cserélném, meg fogod szeretni hidd el. Én olyan szinten élvezem, hogy 20 percenként commit, 5 fájl esetén is 3 commit ha jelezni szeretném mi tartozik egybe.
A production deploy (egy tároló egy cel egy kolléga egy időpontban) mehetne akár ftp-vel de ha ott a git pull, akkor minek. Ehhez távolról elérhető git kell (nem office self hosted), de az egy idő után amiatt is kell hogy ne kelljen home office-bol állandóan vpn-ezni.
- A hozzászóláshoz be kell jelentkezni
Ertsd jol: vannak a celra alkalmasabb technologiak, amelyek vagy kevesebb beallitast igenyelnek, vagy automatizalhatok, vagy biztonsagosabbak.
Shared hosting eseten ez a video johet jol.
VPS eseten meg kismillio tool van. A teljesseg igenye nelkul:
Gitlab a DigitalOcean megkozeliteseben
Udv.
- A hozzászóláshoz be kell jelentkezni