Z testu joela :
Czy potrafisz wykonać kompilację w jednym kroku?
Muszę powiedzieć, że nie mogę. Obecnie pracuję nad aplikacją internetową, która zawiera listę elementów arkusza kalkulacyjnego, które należy wykonać w celu wdrożenia. Więc moje pytanie brzmi: jak mogę to zautomatyzować ? Czy musi to dotyczyć całej organizacji? Wskazówki / techniki?
tools
builds
automation
billy.bob
źródło
źródło
Odpowiedzi:
Marka może zautomatyzować proces kompilacji w jednym kroku. Marka może zrobić prawie wszystko, co tylko chcesz. Nie jestem pewien, dlaczego sapporo uważa, że Make dotyczy tylko C / C ++. Możesz użyć make do uruchomienia dowolnego rodzaju polecenia. Nie jest nawet związany z programowaniem, ale do tego jest zwykle używany.
źródło
W zależności od środowiska możesz przyjrzeć się Make (C / C ++), Ant / Maven (Java), Gradle (Groovy) - to te, które znam. Szanse są duże, istnieje popularne rozwiązanie dla twojego środowiska.
źródło
W pracy używamy FinalBuilder , co ułatwia skonfigurowanie skryptu do automatyzacji całego procesu: sprawdź kod, zbuduj wszystko, uruchom testy, utwórz pakiet wdrożeniowy itp.
To bardzo dobre narzędzie, które niedawno zdobyło nagrodę Dr. Dobbs Jolt za narzędzia do zarządzania zmianami i konfiguracją.
źródło
Na pewno istnieje sposób na zautomatyzowanie tego. Dzięki narzędziom takim jak Chef , skonfigurowanie nowego, świeżo zainstalowanego serwera może być tak proste, jak:
W moim przypadku niektóre kroki wykonywane przez to pojedyncze polecenie to:
Nie jestem pewien, jak Chef zachowa się w twoim środowisku, ponieważ obsługa systemu Windows jest wymieniona jako „wstępna”, ale w przypadku systemu UNIX to kolana pszczół.
Puppet to podobny system, który jest nieco starszy od szefa kuchni i może oferować lepszą obsługę systemu Windows.
źródło
Z Maven jest to proste w świecie Java
W naszej konfiguracji robi to wszystko, co niezbędne do zbudowania pliku WAR (pobieranie zależności JAR w razie potrzeby), wdrożenie na serwerze deweloperskim i utworzenie danych testowych w bazie danych dewelopera. Gdy to nastąpi, Maven przeprowadzi kompleksowe testy funkcjonalne za pośrednictwem SeleniumRC w celu weryfikacji działania aplikacji.
To pojedyncze polecenie powoduje, że aplikacja jest w pełni wdrożona w klastrze serwerów deweloperów, dzięki czemu jest dostępna dla innych programistów do natychmiastowej pracy (zakładając, że przeszła testy). Wdrażanie oprogramowania deweloperskiego kończy się niepowodzeniem, ponieważ programiści sprawdzili, czy działa on lokalnie
mvn clean install
.Artefakt migawki (WAR) jest następnie kopiowany do repozytorium Maven w celu udostępniania go innym programistom (zgodnie ze standardowym
deploy
zachowaniem Maven ).OK, ale wdrożyłeś tylko migawkę dla programistów, co z testami i produkcją?
Dystrybucja do testowych i (późniejszych) serwerów produkcyjnych jest obsługiwana przez proces wydania Maven, który lubimy obsługiwać ręcznie, aby upewnić się, że ktoś obserwuje podejrzane dane wyjściowe. Testerzy pracują tylko z wydanymi artefaktami, a nie migawkami.
Po wydaniu jest używany prosty skrypt kompilacji do SFTP pliku WAR do klastra serwerów testowych, ponownie, gdy ktoś obserwuje proces, aby upewnić się, że nic nie pójdzie źle.
Wreszcie, po tym, jak wszyscy testerzy są zadowoleni, niezmienionym plikiem WAR jest SFTP aż do klastra serwerów produkcyjnych przełączania awaryjnego, przy czym ktoś pilnie obserwuje i natychmiast przywraca pozycję na wypadek awarii.
źródło
Doszedłem do wniosku, że mogę to sprawdzić na podstawie testu Joela, więc ...
Zrobiłem serwer kompilacji w Pythonie zautomatyzowałem go za pomocą pychron .
Kod został zsynchronizowany z VSS z wiersza poleceń, kompilacja przy użyciu borland make (większość IDE utworzy dla ciebie pliki make, niezależnie od tego, czy nazywają je tak. Delphi używało pompowania plików make i wywoływało je .BPG, teraz „ ponownie w plikach MSBuild XML i można użyć MSBuild), a błędy zostały umieszczone w pliku XML, do którego właśnie dodawałem.
Więc .. Po prostu napisz plik wsadowy i rób te rzeczy.
źródło