Git Push into Production (FTP)


130

Chciałbym wiedzieć, czy istnieje łatwy sposób na wypchnięcie repozytorium GIT do produkcji (na serwerze FTP)? Dzięki

Odpowiedzi:


162

Niektóre narzędzia niedawno dodane do wiki Git :

git-ftp autorstwa René Mosera to prosty skrypt powłoki do obsługi FTP w sposób Git. Użyj git-ftp.sh, aby przesłać tylko pliki śledzone przez Git na serwer FTP, które uległy zmianie od ostatniego przesyłania. Oszczędza to czas i przepustowość. Nawet jeśli grasz z różnymi gałęziami, git-ftp.sh wie, które pliki są różne. Żaden zwykły klient FTP nie może tego zrobić.

git-ftp autorstwa Edwarda Z. Yang to prosty skrypt napisany w Pythonie do przesyłania plików do repozytorium Git przez FTP, tylko do przesyłania nowych plików i usuwania starych plików.


3
używając git-ftp, czy istnieje sposób na przekazanie tylko podkatalogu (np. folderu publikowania w formacie HTML5 boilerplate) do określonego katalogu ftp?
gang

A co, jeśli w zespole jest kilku programistów. Czy nadal można używać tych skryptów?
Trilliput

@Trilliput: Trochę późno, ale tak, pośredni serwer / maszyna wirtualna
Pranav 웃

github.com/banago/PHPloy również robi podobną rzecz, ale działa z modułami podrzędnymi , z którymi podejrzewam, że niektóre z wymienionych narzędzi mogą mieć problemy.
Simon East,

Główny problem z git-ftp (nie jestem pewien skryptu lub pythona), którego próbowałem, był bardzo zły podczas przesyłania dużych fragmentów plików i długiej listy plików.
indianwebdevil


11

Znalazłem PHPloy jako świetne narzędzie do wysyłania zatwierdzeń Git do zdalnych serwerów przez FTP. Działa z wiersza poleceń i jest napisany w PHP (a nawet wykrywa zmiany w modułach podrzędnych).

https://github.com/banago/PHPloy

git commit ...
phploy -s staging
phploy -s production

Gotowe!

(Zastrzeżenie: po używaniu go przez jakiś czas dodałem kilka poprawek i ulepszeń kodu, dzięki czemu jest kompatybilny z Windows.)


10

Jeśli korzystasz z komputera Mac i masz Transmit, polecam następujący skrypt git-tranmit ( https://gist.github.com/379750 ). Używa DockSend do wysyłania tylko ostatnio zaktualizowanych plików. Jeśli nie znasz DockSend, sprawdź http://www.panic.com/blog/2010/11/15-secrets-of-transmit/ .

Ustawiać:

  1. cp git-transit / usr / sbin /.
  2. cd / usr / sbin
  3. chmod + x git-transmit
  4. Skonfiguruj wysyłanie drop dla swojej aplikacji na żywo
  5. Uruchom git-transmit w swoim repozytorium git.

1
Ten skrypt jest raczej niezdarny, jeśli chodzi o wybieranie „ostatnio aktualizowanych plików”. Sprawdź ten widelec, aby uzyskać bardziej eleganckie rozwiązanie.
quickshift w

Oprócz tego możesz chcieć przesyłać tylko pliki śledzone i niezatwierdzone. Oto mały skrypt, który właśnie to robi: gist.github.com/borisdiakur/37b8f512f6f8865b79c7
borisdiakur

5

Ściśle mówiąc, nie do tego służy git. Jeśli jednak Twoje źródło jest czymś, co nie wymaga kompilacji ani przetwarzania, na przykład strona internetowa składająca się wyłącznie z plików html i javascript itp., Możesz mieć klon repozytorium na swoim serwerze internetowym i używać go git pullz serwera, aby go utrzymać -spotykać się z kimś. Uwaga, skonfigurowałbym twój serwer WWW, aby ukrył katalog git i tym podobne. A to dopiero początek obaw o bezpieczeństwo.

Jeśli masz jakiekolwiek kompilacje lub przetwarzanie, powinieneś zacząć patrzeć na Ant , Maven , BuildR , SBT itp.


29
Jedynym problemem jest to, że nie masz dostępu do serwera produkcyjnego, tj. Może to być prosty hosting współdzielony, z dostępem tylko do FTP.
dodgy_coder

4

Możesz użyć Deployhq.com, to działa jak urok, jedyne, co musisz zrobić, to skonfigurować repozytorium i konto FTP.

Obecnie są to następujące systemy kontroli wersji:

Git, Subversion, Mercurial.

Z hostowanym repozytorium

  • GitHub
  • Bitbucket
  • GitLab
  • Codebase

wprowadź opis obrazu tutaj




1

Jest tutaj skrypt Ruby - Ruby git-deploy przez FTP lub SSH, który przesyła tylko zmienione pliki w repozytorium git za pośrednictwem FTP lub SSH.

Jak wspomniano w innej odpowiedzi, oto skrypt Pythona git-ftp.py, który robi podobną rzecz.

A oto wersja skryptu powłoki git-ftp .

Istnieje również projekt Ruby gem o nazwie git-deploy, który umożliwia skonfigurowanie niestandardowego wdrożenia za pomocą pilota git za pomocą git pushpolecenia, w taki sam sposób, jak usługi Heroku i Azure. W tym przypadku może być konieczne napisanie niestandardowych metod do wdrożenia przez FTP i myślę, że zakłada się, że masz dostęp SSH do serwera produkcyjnego.


0

Jeśli wprowadzasz kod do produkcji, zalecam użycie „instalatora”, takiego jak pakiet RPM, do zainstalowania kodu. W ten sposób zostanie oznaczona wersja i będziesz mógł wykorzystać pakiet instalatora do obsługi aktualizacji kodu produkcyjnego. Git nie jest tak naprawdę zaprojektowany do obsługi instalacji produkcyjnych, jest przeznaczony do śledzenia zmian w samym kodzie.

W każdym razie, po zbudowaniu pliku .RPM (lub EXE lub czymkolwiek), możesz po prostu przesłać go przez FTP do systemu produkcyjnego i zainstalować jak każdy inny pakiet.


5
Cóż, w rzeczywistości git może być całkiem dobrze wykorzystany do tego celu. Sprawdź tag i utwórz haki po zakupie, po scaleniu itp., Aby obsłużyć wszelkie wymagane procedury instalacyjne. Kiedyś używaliśmy pakietów RPM, ale po przejściu na git było to po prostu przesada.
d11wtq

0

Dodaj go jako pilota, a następnie możesz do niego wypchnąć, jednak zwykłe przesłanie kodu nie wystarczy, należy go scalić z drzewem roboczym. Najłatwiej jest przejść na drugą stronę, mieć działające drzewo na serwerze i pobrać je i scalić z nim.



0

Bardzo się starałem, żeby to rozgryźć. Wymyśliłem łatwy sposób na zrobienie tego z różnych źródeł ( git-ftpINSTALL , git-ftpUPLOAD , git-ftpIssue , git-ftpPUSH ). Możesz przeczytać w celach informacyjnych, ale nie ma takiej potrzeby, ponieważ wspomniałem poniżej o procesie krok po kroku.

Po pierwsze: zainstaluj git i curl za pomocą brew w systemie Mac OS

brew install git
brew install curl --with-ssl --with-libssh2
brew install git-ftp

Uruchom następujące polecenia:

git clone https://github.com/git-ftp/git-ftp.git
cd git-ftp
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install

Aktualizacja za pomocą git

git pull
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
sudo make install

Ustawiać

git config git-ftp.url YourFtpServerName.Net
git config git-ftp.user FtpUserName
git config git-ftp.password YourPassword

Prześlij wszystkie pliki

git ftp init

Lub jeśli pliki już tam są

git ftp catchup

Pracuj i wdrażaj

echo "Hello StackOverflow" >> index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"
git ftp push

Jeśli wystąpi błąd: pathspec „index.txt” nie pasuje do żadnego pliku (ów) znanych gitowi . Oznacza to, że plik nie został jeszcze wystawiony, więc dodaj plik, a następnie spróbuj zatwierdzić.

git add application/libraries/index.txt
git commit application/libraries/index.txt -m "I love StackOverflow"

Mam nadzieję że to pomoże.


0

Możesz spróbować FTPloy ...

https://ftploy.com

„Wypychaj zmiany do GitHub lub Bitbucket”.

„Wdrażaj zmiany automatycznie na serwerze”

Masz jeden darmowy projekt, z którym możesz go wypróbować. Obecnie używam dla małej witryny php i działa całkiem dobrze. Kilka błędów na stronie, ale jest to aktywny projekt, więc przynajmniej nad nim pracują.


2
Opublikowałem tę odpowiedź przedwcześnie. FTPloy nie jest do końca „gotowy do produkcji” i zawiera wiele błędów. Nie mogłem zmusić go do pracy. Używam DeployHQ, który działa bardzo dobrze.
Dave Thompson

0

Sprawdź https://gitftp-deploy.com/, jeśli korzystasz z MacOS i lubisz GUI.

Jest to fajna mała aplikacja, która używa Gita do śledzenia zmian i przesyłania tylko zmienionych plików przez FTP.

Jest to szczególnie przydatne, jeśli nie lubisz płacić miesięcznych opłat za dziesiątki mniejszych projektów z małymi zespołami.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.