2009-06-15 12 views
9

Posiadanie "buildu jednoprzyciskowego" do przenoszenia zmian ze środowiska programistycznego na serwer na żywo to jedna rzecz, którą bardzo lubię mieć i często jest się jej bronić.W jaki sposób zaimplementować "konstrukcję w jednym kroku" dla projektu LAMP?

Przyszedłem na pokład z małym zespołem pracującym w stosie LAMP i używam SVN do kontroli wersji, obecnie wdrażanego na jednym serwerze produkcyjnym (kolejny serwer do rozwoju i wkrótce będzie oddzielnym serwerem mysql). Właśnie wprowadzam wiele rzeczy organizacyjnych, których brakowało mi przed wejściem na pokład.

Jestem ciekaw

  1. jak ludzie robią to (jeden etapu budowy) obecnie
  2. zobaczyć w jaki sposób można go wdrożyć najlepsze dla mojej sytuacji (mały zespół, środowisko lampa z SVN)

Niektóre szczególne wyzwania, które mnie interesują, dotyczyły zmian w bazie danych (schematu), a także tego, czy i jakich "pakietów" używają ludzie do porządkowania rzeczy (np. RPM, PEAR itp.).

Odpowiedz

7

Użyliśmy ant z Hudson. Pracował jak urok.

Hudson pracował również z innymi systemami, a nie tylko z Java. Pozwala skonfigurować wiele celów kompilacji i uruchamia je automatycznie lub ręcznie. Wymusza to również wdrożenie sposobu uruchamiania kompilacji za pomocą pojedynczego polecenia.

Nie rozwiązuje problemów z komunikacją, w których serwer będzie niedostępny w czasie potrzebnym do uruchomienia kompilacji dla wdrożonego serwera.

Dla naszych aktualizacji schematu i zmian, możemy skonfigurować nasze ant skrypt zrobić dwie rzeczy:

  1. uruchamiania aktualizacji schematu tylko wtedy, gdy istnieje różnica w SVN.
  2. Sprawdź zrzut schematu po utworzeniu zmian schematu.
  3. Jeśli nie było aktualizacji do schematu, wystarczy użyć zrzutu załadować bazę danych

To nie potrwać kilka prób, aby uzyskać prawo, ale nagle mieliśmy rozwiązać problem wielu programistów jest na różnych schematów . Importowanie zrzutu było tak łatwe, aby zaktualizować swój schemat rozwoju, który możesz wykonywać codziennie.

+1

Hudson jest niesamowite. – stimms

2

Robimy. Używamy produktu o nazwie Anthill Pro, aby wykonać wszystkie nasze kompilacje i wdrożenia. Ma proces przepływu pracy, który skonfigurowano w celu sprawdzenia plików, wykonania kompilacji, uruchomienia testów jednostkowych, a następnie wdrożenia kodu na serwerach. Możesz go użyć do rozmieszczenia prawie wszystkiego, ponieważ proces może uruchamiać programy wiersza poleceń itp.

1

"make" w systemie UNIX (i Windows) jest twoim przyjacielem. Ma jednak krzywą uczenia się, ale warto. Możesz zaktualizować źródło, skompilować, przetestować itp.

2

Nie sądzę, że istnieje prosta odpowiedź na ten temat, ponieważ zależy to w dużym stopniu od środowiska. Niezależnie od tego, co wymyślisz, bardzo polecam podejście oparte na skryptach, ponieważ skrypty wdrażania są same w sobie kontrolowane. Skrypty te pozwolą również na lepszą integrację z rozwiązaniami kompilującymi (patrz poniżej).

Najprostszym takim skryptem do uruchomienia w środowisku produkcyjnym byłoby po prostu polecenie uzyskania najnowszej wersji (lub uzyskania określonej wersji) z kontroli źródła.

Kolejnym wyzwaniem jest wdrożenie bazy danych. Rozwiązaniem, które najbardziej lubię dla małych i średnich projektów, jest utrzymywanie tabeli wersji schematu w każdej bazie danych oraz posiadanie wszystkich skryptów DDL i skryptów aktualizacji danych w kontroli źródła (w tym źródeł danych, których używają w skompresowanych archiwach). Skrypty są ponumerowane kolejno (począwszy od 000001 ..., 000002 ..., itd.), A uruchamiany przeze mnie skrypt instalacyjny po prostu tworzy kopię zapasową istniejącej bazy danych, a następnie pobiera ostatni skrypt bazy danych z tabeli wersji, a następnie uruchamia wszelkie nowe skrypty bazy danych znalezione w kontroli kodu źródłowego w poprawnej kolejności, aktualizując odpowiednio tabelę wersji schematu.

To podejście pozwala mi dość szybko odbudować bazę danych od podstaw.

Oba podejścia razem wzięte pozwalają szybko wdrożyć swoją bazę kodu do kilku różnych maszynach pomostowym środowiska QA, beta, itd


uzyskać tylko trochę bardziej złożonych scenariuszy, należy uruchom serwer budowania ciągłej integracji, taki jak Kieveli i in. glin. zasugerowano, co zasadniczo "odbudowuje" całe twoje wdrożenie, a zatem zawiera skrypty do wykonania dokładnie tego, co zrobiłbyś "ręcznie" powyżej.

Wdrażanie bazy danych można również ulepszyć, tworząc skrypt wycofania dla każdego skryptu bazy danych. Powinieneś wtedy napisać małą aplikację kontrolera, aby sobie z nimi poradzić. Istnieje kilka rozwiązań OSS dla tego rodzaju rzeczy i jeden z nich może pasować do twoich potrzeb.

ALE, upewnij się, że nigdy automatycznego rozmieszczania bazy danych w środowisku produkcyjnym ;-)

2

najlepsze narzędzie do budowania projektu PHP jest prawdopodobnie Phing, który jest bardzo podobny do mrówki, ale jest napisany w PHP. Zawiera wszystkie niezbędne rzeczy, których potrzebujesz do czegoś takiego, jak np. Pobieranie rzeczy z repozytorium svn.

0

Po zbudowaniu jednego kroku można z łatwością przekształcić go w ciągłe kompilacje.

Posiadamy wszystkie nasze skompilowane kompilacje, oznaczone numerem zmiany, z którego zostały zbudowane, na centralnym serwerze. Kiedy coś się zaangażuje (użyjemy Perforce, ale to będzie działać dla SVN), cronjob na jednym z naszych pól budujących zauważa, że ​​jest nowsza zmiana niż jest to kompilacja, uruchamia żądanie http pobierania drzewa źródłowego i zaczyna budować (z GMake, głównie). Ciągła kompilacja w zaledwie kilku prostych krokach :)

Po tym czasie wystarczy automatyczna automatyzacja wszystkich testów. W pełni zbudowany i przetestowany (możliwe do zainstalowania!) Kod po każdym zatwierdzeniu.

0

W języku skryptowym zwykłe porady, takie jak używanie wariantu mrówkowego lub CruiseControl, nie mają większego znaczenia, ponieważ nie trzeba niczego kompilować.

Trzymajmy się bazy danych. Trzy ważne rzeczy, jeśli chodzi o ciągłą integrację, to automatyzacja, automatyzacja i automatyzacja. Oznacza to, że musisz mieć wszystko, od budowania pustej bazy danych, importowania danych zewnętrznych i aktualizacji do nowej wersji, która jest skryptowana i gotowa do uruchomienia przy użyciu niektórych skryptów. Dobrym tego przykładem może być coś takiego jak MediaWiki, które pozwala ci skonfigurować i zainstalować za pomocą samego php. Polecam uruchomienie serwera kompilacji w celu wdrożenia świeżej bazy danych w ciągu dnia, uruchomienia testów jednostkowych i wysyłania wiadomości e-mail, jeśli wystąpią błędy.

0

Sposób, myślę o tym, że chcesz jeden skrypt ciągnąć wszystko razem, w zasadzie uzyskać wszystkie pliki \ środków z kontroli źródła AN wykonać wszystkie kroki, aby utworzyć końcowy „produkt”

wyłączanie w mojej głowie mogą to być: pobierz najnowsze, skompiluj, uzyskaj wszelkie inne pliki potrzebne do ukończenia produktu, utwórz instalator (jeśli to konieczne), uruchom testy jednostkowe, udostępnij dane wyjściowe na serwerze (cokolwiek może to oznaczać dla konkretnego projektu), oraz poinformować użytkowników, że nowa wersja została utworzona (lub powiedzieć im, jeśli tak się nie stało i dlaczego). I cokolwiek innego trzeba zrobić.

W przeszłości zwykle zaczynałem od jakiegoś pliku wsadowego, a następnie utworzyłem niestandardowy plik konstruktora niestandardowego. Ale utrzymywanie tego zawsze stawało się bólem. Ostatecznie przenoszę aplikacje do aplikacji firm trzecich ... teraz używam tylko jednego z dwóch produktów poniżej.

http://www.kinook.com/VBP/

http://www.finalbuilder.com/

Powiązane problemy