Portál AbcLinuxu, 30. dubna 2025 09:08
Git deploy je nástroj pro vykládání Git projektů na vzdálený server přes SSH nebo FTP/S a to jak z klientské strany tak ze strany serveru při git push, který jsem napsal speciálně pro mé použití a pro firmu kde momentálně pracuji. Primární použití je pro vykládání webových stránek na produkční server.
Script je napsán v PHP, a to z několika důvodů:
Dále už jen strohý překlad README.md
Skript stačí jednoduše nakopírovat do /usr/bin
a nastavit práva pro spuštění.
V root repositáře který chceme vykládat vytvoříme soubor deploy.ini
s následující konfigurací (Pro server side jej musíme také commitnout na server):
;target configuration [deploy] ;;protocols can be sftp for SSH (SCP), ftp or ftps for FTP or secure FTP target = 'ftp://user:password@example.com:21/path/to/deploy' ;;deploy a project or not deploy = true ;Special rights for files relative to git root [file_rights] dir/file = 777
V klientské části stačí v root git repositáře spustit příkaz git deploy
.
Pro nasazení na serveru je třeba postupovat stejně jako v případě klienta, poté stačí vytvořit link z /usr/bin/git-deploy
do hook složky požadovaného repositáře (nebo do šablon hooku) jako post-receive
. Tímto způsobem se při git push
vždy vyloží nové změny na server. Toto je výhodné při práci více lidí na projektu.
Git deploy ukládá soubor pojmenovaný REVISION
na cílové úložiště který obsahuje stávající revizi vyloženého kódu.
Když se spustí vykládání přes git deploy
, git deploy stáhne soubor z cílového serveru a vyloží změny od dané revize.
Možnost načíst url při úspěšném vyložení (pro vysypání cache, spuštění migrace, etc)
Tiskni
Sdílej:
apt-get install capistrano
moc nehrozí, a vubec je to dalsi rezie, HC bylo tady vubec protlacit GiTJak bych ti to jen rekl... kdyz jsem sem prisel tak se tu pouzivaly wXP/7 s PsPad a Totalcommander a vse se nahravalo pres FTP, svn se tu pouzivalo jako jakesi zalohovaci uloziste (proste jendou za cas nekdo vzal bordel z FTP a nahral jej do SVN) Horor.
Me s kolegou se tu povedlo rozsirit netbeans s php modulem a Nette jako framework. (zbyvaji dva programatori kteri stale trci na TC a Pspadu)
Dale se mi povedlo zrusit a zmigrovat SVN na GIT (Gitlab presneji) plus tento deploying jako sprava verzi a pomalu nim nahrazuji FTP.
Dale tu vytvarim tlaky na technicke aby zmigrovali servery na novy debian, nekde se pouziva jeste debian 5.0 jinde 6.0, jeden 6.0 jsem sam zmigroval na 7.1
A moje workstation je taky hromada me prace, je slozen z dilu k vyhozeni ktere byly lepsi nez moje puvodni stanice z WXP, Archlinux jsem si sem nainstaloval bez povoleni protoze pod Windows se proste neda rozume pracovat
A o codestyle radsi uz ani mluvit nebudu... nebo nad security bugy ktere jsem obevil a "mava" se nad nema rukou...
No zatim ma zkusenost s lidmi pouzivajici tyto tools... neni zrovna nejlepsi...
@workflow, vsechno postupne, da mi dost prace zde zabit FTP... Rad bych se ale prvne zbavil win stanic, delat tam cokoliv poradneho je hrozna otrava a na vyvoj jsou krajne nevyhovujici. Prejit na GiT melo cenu, kvuli deployingu a hlavne kvuli Gitlabu ktery nam dava krasnou privatni verzi githubu.
@administratori, jako duvod uvadeji ze nechteji rozbit aplikace zakaznikum a nemohou si pry dovolit downtime. I kdyz znam reseni jak toto vyresit s minimalnim downtime a zakaznikum se da 2mesice do predu poslat email aby otestovali sve aplikace na nove verzi php, nemuzu je do toho nutit. Mam slibeny novy server ktery bych mohl mit pod spravou a na ktery by sly nove aplikace, takze me toto trochu uklidnilo.
@HW, k tomu se nechci ani vyjadrovat... Workstation tomu rikam jen proto ze se u "toho" "pracuje", jinak to s workstation nema nic spolecneho: Normal PC s jednim HDD, Malo RAM, Dualcore CPU, bez UPS(A ze tu elektrina obcas vyleti) a to nejlepsi na konec, LCD 17' 1280x1024 s mizernyma barvama (Coz je hodne "super" protoze delam i designy k webu, responzivni)
Mam posledni dobou celkem dilema jestli ma cenu to tu "rekultivovat" nebo dat vypoved, protoze i plat je naprd
ssh server.example.tld \ cd /target/dir \ \&\& git pull --rebase \ \&\& git submodule update --installGit pull se chytne checkoutnuté větve a udělá, co je potřeba, --rebase je kvůli případným modifikacím na serveru, které by tam neměly být. Samozřejmě to nevolám takle přímo, mám to ve skriptu (uloženém na serveru) spolu s pár dalšíma věcma nutnýma pro update, ty jsou však specifické pro každý projekt a instalaci.
Toto je urcene pro servery s omezenym pristupem a rozdilnym prostredim... vem si ze mas 6 serveru, na jeden mas pristup pres SCP na dalsi 3 pres FTP a na jeden mas ssh ale je moc stary vuci novemu git serveru, a posledi je ok
Zbyva jednine reseni, vykladat pres FTP/SSH timto zpusobemProsta vykladka na rozdile servery o rozdilne konfiguraci nebo jen na blbe webhostingy je diky git-deploy mozne.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.