Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak pracowac z produkcja i developmentem? GIT
Forum PHP.pl > Forum > Kontrola i zarządzanie projektami
bialko0019
Witam Was. Jak przenieść wersję z produkcji na developerską? Załóżmy że pracuję sobie na gałęzi A. Jest ona skończona. Jest to na serwerze www.A.pl. Teraz chcę przenieść na inny serwer, pod który jest już podpięta domena, czyli np. www.b.pl ?

Chodzi o to, że pracuję na gałęzi A, i całe oprogramowanie jest skończone i chce przenieść już na serwer serwis. Potem oczywiście będą sytuacje, że dalej pracuje sobie na produkcji, jak zrobię nowy ficzer, to chciałbym go przenieść na produkcję któa jest na innym serwerze.

Pomyślałem, że można to zrobić tak, żeby wgrać na bitbucket push`em, a na nowym serwerem zrobić git clone - ale czy to fachowe rozwiązanie, tak się robi ? Czy jak to się odbywa, gdy są dwa całkowicie inne serwery, oczywiście z dostępem ssh. ;-)
vokiel
Poczytaj o Git Flow.

Generalnie jeśli masz repozytorium główne (np. na Bitbucket) możesz sobie ustalić, że branch master odpowiada produkcji (b.pl) a major środowisku dev (a.pl).
Tworząc sobie kod pracujesz na branch'ach dedykowanych do poszczególnych zagadnień/zadań. W momencie gdy zrobisz merge feature branch'a do major to możesz te zmiany wprowadzić na a.pl, a jak zrobisz merge do master to na b.pl.

Zmiany na a/b możesz robić ręcznie (logując się przez SSH na serwer i wpisując komendy) lub napisz jakiś skrypt, który to zautomatyzuje (korzystając z hook'ów). Możesz na początek zrobić coś bardzo prostego - skrypt który odbierze informację z webhooka i wykona tych kilka komend (ściągnie zmiany z repozytorium, uruchomi testy, podmieni pliki w lokalizacji docelowej, wyśle maila z podusmowaniem) poprzez jakieś shell_exec.

Później możesz się pokusić o bardziej zautomatyzowane, dedykowane środowisko, które wykona te wszystkie czynności za każdym razem gdy nastąpi push/merge do wybranego branch'a.
bialko0019
acha, czyli pracuję i testuję nowe ficzery na gałęzi jednej. Jeśli uznaję, że jest okey, to kopiuję z brancha na którym pracuję do brancha, który jest już oficjalny. Następnie na drugim serwerze chcę dopiero wgrać wtedy, gdy chcę, a nie automatycznie - czyli jedynym wyjściem jest git clone branch`a oficjalnego na drugim serwerze?
Pyton_000
nie clone a po prostu pull.

Na serwerze A branch develop do testowania (przed releasem na serwerze B robisz sobie gałąź release i testujesz, jeśli jest ok to merge do master), na serwerze B master

http://nvie.com/posts/a-successful-git-branching-model/
bialko0019
PIęknie! Ogarnąłem wstępnie, dziękuję wink.gif Jeszcze pytanie. Jak pracuje 10 programistów - to wątpie by wszyscy pracowali na jednym serwerze, bo ktoś sobie coś wyprintuje, ktoś coś pokaże i wtedy np. na jednej stronie jest zamieszanie, nie wiadomo czy ja coś printuje czy ktoś inny itd. Wtedy też pracuje każdy programista na innym swoim lokalnym serwerze np. xampp (zawsze wczesniej pobiera ost. zmiany) i dopiero daje zmiany do serwera gdzie już powinny wszystko działać, a stamtąd jakiś team leader daje zmiany jeśli jest okey na docelowy serwer, czy jakoś inaczej? Czy może jakoś tak, że każdy pracownik ma www w jakimś podkatalogu?
markuz
Najlepszą opcją było by postawienie serwerów lokalnie na maszynach wirtualnych które mają ten sam system i biblioteki co serwer produkcyjny - wtedy nie powinno być problemów z kompatybilnością.
bialko0019
No właśnie, czyli jeśli mam dedyka i np. debiana. To na jakimś virtualbox`ie instalować debiana, zrobić obraz i każdy kto nowy pracownik jest to mu go tworzyć? A jak się zaaktualizuje i zainstaluje jakąś nową bibliotekę, to wtedy wszystkim też instalować? ;p To chyba lepiej mieć aplikację w kilku katalogach na jednym serwerze zdalnym bo jak coś dojdzie to potem problem.. Chyba, że jakiś inny pomysł
vokiel
Każdy deweloper pracuje na VM na swoim komputerze (nie ma sensu pchać każdej zmiany do zdalnego repozytorium, żeby odpalić to na jakimś wspólnym serwerze).

Problem z aktualizacją wszystkich maszyn oczywiście może wystąpić. Jednak IMHO nie powinien pojawiać się zbyt często, bo raczej serwera produkcyjnego nie aktualizuje się codziennie.
Rozwiązań jest kilka, począwszy od generowania nowego pliku po aktualizacji (ova dla VBox), poprzez Vagranta (update box) skończywszy na Dokerze.
bialko0019
A podpowiedzcie mi. Czy jest jakaś możliwość zrobienia zrzutu z już istniejącego serwera? Jakiś czas temu zainstalowałem sobie na dedyku debiana, różne usługi, biblioteki i przydatne dla mnie funkcje, i chciałbym to przenieść na np. virtualbox`a, żeby sobie lokalnie działać. Jest jakiś sposób by to przenieść czy raczej nie ma sensu i lepiej instalować raz jeszcze, instalować usługi i już?
nospor
Cytat
zy raczej nie ma sensu i lepiej instalować raz jeszcze, instalować usługi i już
Zainteresuj sie vagrantem lub dockerem.
Tam na dzien dobry dostajesz system jaki chcesz i nie musisz go instalowac. Pozostaje tylko kwestia doinstalowania reszty programow, ale i to nie problem, bo w necie jest pelno kodow na to. Tak raz przygotowana paczke dajesz koledze i on pracuje na tym samym srodowisku co ty. Latwo mozesz tam cos dodac i takie tam.

Osobiscie z tych dwoch co tu ci wymienilem polecam na chwile obecna bardzie Docker. O niebo szybszy, cala masa programow juz poinstalowanych w paczkach, zawsze znajdziesz cos dla siebie -a jak nie, zawsze mozesz wzbogadzic paczke o swoje rzeczy.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2018 Invision Power Services, Inc.