Za każdym razem, gdy nowy programista dołącza do zespołu lub komputera, którego programista używa zmian, musi wykonać wiele pracy, aby skonfigurować lokalne środowisko programistyczne, aby bieżący projekt działał. Jako zespół SCRUM staramy się zautomatyzować wszystko, w tym wdrażanie i testy, więc pytam: czy istnieje narzędzie lub praktyka umożliwiająca zautomatyzowanie konfiguracji lokalnego środowiska programistycznego?
Na przykład, aby skonfigurować moje środowisko, najpierw musiałem zainstalować eclipse, a następnie SVN, Apache, Tomcat, MySQL, PHP. Następnie zapełniłem bazę danych i musiałem dokonać drobnych zmian w różnych plikach konfiguracyjnych itp. Czy istnieje sposób na ograniczenie tej pracy do jednego kliknięcia?
Natknąłem się na to pytanie i byłem bardzo zdziwiony, że nikt jeszcze nie wspomniał o Vagrant .
Jak wspomnieli Pete TerMaat i inni, wirtualizacja to świetny sposób na zarządzanie i automatyzację środowisk programistycznych. Vagrant zasadniczo eliminuje ból związany z konfiguracją tych wirtualnych skrzynek.
W ciągu kilku minut możesz mieć całkowicie nową kopię swojej ulubionej dystrybucji Linuksa, uruchomioną i udostępnioną dokładnie w taki sam sposób, jak serwer produkcyjny.
Koniec z walką z OSX lub Windows o zainstalowanie PHP, MySQL itp. Całe oprogramowanie żyje i działa wewnątrz maszyny wirtualnej. Możesz nawet korzystać z SSH z
vagrant ssh
. Jeśli popełnisz błąd lub coś zepsujesz, po prostuvagrant destroy
to ivagrant up
zacznij od nowa.Vagrant automatycznie tworzy zsynchronizowany folder w lokalnym systemie plików, co oznacza, że nie musisz programować na maszynie wirtualnej (tj. Używając Vima). Użyj dowolnego wybranego edytora.
Teraz tworzę nowe „Vagrant box” dla prawie każdego projektu, który robię. Wszystkie moje ustawienia są zapisywane w repozytorium projektu, więc łatwo jest sprowadzić innego członka zespołu. Muszą po prostu wyciągnąć repozytorium i uruchomić
vagrant up
, i są dosłownie gotowi do pracy.Ułatwia to również znacznie obsługę projektów, które mają różne wymagania dotyczące oprogramowania. Być może masz jakieś projekty, które opierają się na PHP 5.3, ale kilka nowszych, które korzystają z PHP 5.4. Po prostu zainstaluj żądaną wersję dla tego projektu.
Sprawdź to!
źródło
Jedną z ważnych kwestii jest takie skonfigurowanie projektów w kontroli źródła, aby można było natychmiast kompilować, wdrażać i uruchamiać po zakończeniu zakupu.
Oznacza to, że powinieneś również sprawdzić infrastrukturę pomocniczą, taką jak Makefiles, ant buildfiles itp., Oraz ustawienia narzędzi, takie jak pliki projektów IDE.
To powinno rozwiązać problemy z konfiguracją dla poszczególnych projektów.
Do podstawowej konfiguracji maszyny można użyć standardowego obrazu. Inną opcją jest użycie narzędzi platformy do zautomatyzowania instalacji. W Linuksie możesz utworzyć metapakiet, który zależy od wszystkich potrzebnych pakietów. W systemie Windows podobna rzecz powinna być możliwa przy użyciu MSI lub podobnego.
Edytować:
W idealnym przypadku zamiast sprawdzać infrastrukturę pomocniczą należy wpisać informacje, które pozwalają kompilacji wygenerować infrastrukturę pomocniczą. Jest to podejście przyjęte np. Przez system budowania GNU (narzędzia automatyczne itp.) Lub przez Mavena. Jest to jeszcze bardziej eleganckie, ponieważ możesz (teoretycznie) wygenerować infrastrukturę dla dowolnego (obsługiwanego) środowiska kompilacji, dzięki czemu nie jesteś związany np. Z jednym konkretnym IDE, a ustawienia w infrastrukturze pomocniczej (ścieżki itp.) Nie muszą być powielane główne ustawienia projektu.
Jest to jednak również bardziej złożone podejście, więc jeśli nie możesz go uruchomić, uważam, że sprawdzanie rzeczy takich jak pliki IDE bezpośrednio jest dopuszczalne.
źródło
Lubię używać Virtual PC lub VMware do wirtualizacji środowiska programistycznego. Zapewnia to standardowe „środowisko programistyczne”, które może być współdzielone przez programistów. Nie musisz martwić się o oprogramowanie, które użytkownik mógłby dodać do swojego systemu, a które może kolidować ze środowiskiem programistycznym. Daje mi również możliwość pracy przy dwóch projektach, w których środowiska programistyczne nie mogą znajdować się jednocześnie w jednym systemie (przy użyciu dwóch różnych wersji podstawowej technologii).
źródło
Użyj marionetki, aby skonfigurować środowisko programistyczne i produkcyjne. Korzystanie z najnowocześniejszego systemu automatyzacji to jedyny sposób na skalowanie operacji.
źródło
Zawsze istnieje możliwość korzystania z maszyn wirtualnych (patrz np. VMWare Player ). Utwórz jedno środowisko i skopiuj je dla każdego nowego pracownika przy minimalnej wymaganej konfiguracji.
źródło
Wcześniej mieliśmy wszystko (i mam na myśli WSZYSTKO) w SCM (Clearcase potem SVN). Gdy nowy programista może to zrobić, zainstalował ClearCase | SVN i wyssał repozytorium. Obsługuje to również przypadek, w którym musisz zaktualizować konkretną bibliotekę / narzędzie, ponieważ możesz po prostu poprosić zespoły programistów o zaktualizowanie swojego środowiska.
Użyliśmy do tego dwóch repozytoriów, więc kod i narzędzia / konfiguracja znajdowały się w oddzielnych miejscach.
źródło
Bardzo polecam Blueprint od DevStructure. Jest to oprogramowanie typu open source, a Twój przypadek użycia jest dokładnym powodem, dla którego pierwotnie napisaliśmy to oprogramowanie. Nasze cele nieco się zmieniły, ale nadal jest to doskonałe narzędzie do tego, co opisujesz. Krótko mówiąc, możesz tworzyć konfiguracje serwera wielokrotnego użytku - martwe proste zarządzanie konfiguracją. Mam nadzieję, że to pomoże!
https://github.com/devstructure/blueprint (Blueprint @ Github)
źródło
Sam o tym myślałem. Istnieje kilka innych technologii, które możesz dodać do tego miksu. Oto, co obecnie konfiguruję:
sudo apt-get install acmecorp-eclipse-env
lubsudo apt-get install acmecorp-intellij-env
, na przykład.apt-cacher
(pakiet proxy). Oprócz oszczędności przepustowości, znacznie przyspieszy to instalacje (ponieważ pakiety są buforowane w sieci lokalnej).źródło
Jeśli używasz OSX i pracujesz z Railsami. Proponuję:
źródło
Jeśli używasz maszyn w standardowej konfiguracji, możesz wyobrazić sobie dysk z nową, doskonale skonfigurowaną instalacją - jest to bardzo popularne podejście w wielu korporacjach (i nie tylko dla programistów). Jeśli potrzebujesz oddzielnie skonfigurowanych systemów operacyjnych, możesz tar-bz2 wszystkie dodane i zmienione pliki, gdy skonfigurowany system operacyjny zostanie przekształcony w żądaną konfigurację i po prostu rozpakuj go jako root, aby utworzyć żądane środowisko od zera.
źródło
jeśli używasz wersji linuxowej, prawdopodobnie masz system zarządzania pakietami: myśli .rpm dla fedora / redhat lub .deb dla ubuntu / debian. wiele z rzeczy, które opisujesz, ma już dostępne pakiety: svn, eclipse, itp. możesz toczyć własne pakiety dla oprogramowania specyficznego dla firmy, utworzyć repozytorium (być może dostępne tylko w sieci lokalnej), a następnie Twoja konfiguracja może zostać zredukowana do jednego skrypt bash, który doda repozytorium firmy do /etc/apt/sources.list (debian / ubuntu), a następnie wywoła polecenie takie jak,
możesz użyć buildbota, aby następnie zautomatyzować regularne kompilacje pakietów firmowych, które często się zmieniają.
źródło
Wypróbuj DevScript pod adresem http://nsnihalsahu.github.io/devscript . To jedno polecenie, takie jak,
devscript lamp
lubdevscript laravel
lubdevscript django
. Za około kilka minut, w zależności od szybkości połączenia internetowegoźródło