Czy potrafisz wykonać kompilację w jednym kroku?

14

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?

billy.bob
źródło
3
Zależy, jakie są pozycje na liście? Idealnie, tak, powinieneś być w stanie to zautomatyzować.
Nikt
4
en.wikipedia.org/wiki/Build_automation BTW: Niektórzy pozostali o krok to jeden za dużo :)
Mchl
Wszystkie rodzaje - przenieś pliki, skrypty procedur przechowywanych itp. - Jest 14 kroków!
billy.bob
2
Z innej perspektywy, co według ciebie nie możesz zautomatyzować?
Tyanna
1
Pytanie, jak zautomatyzować kompilację, nie jest subiektywne i powinno być zadawane przy przepełnieniu stosu. Pytanie powinno również zawierać więcej informacji o potrzebnych zadaniach, aby uzyskać przydatną odpowiedź.
David Thornley,

Odpowiedzi:

10

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.

Pemda
źródło
2
make jest jednym z narzędzi typu „szwajcarski scyzoryk”; uwielbiam z tym pracować. Inną kwestią do wskazania, gdzie marka byłaby przydatna, jest to, że jeśli automatyzujesz kompilację / proces / itp., A jeden lub więcej kroków zależy od innego pomyślnego ukończenia, make zatrzyma się, jeśli ten krok się nie powiedzie, nie zezwalając na kontynuowanie innych kroków i prawdopodobnie powodować problemy.
Czy
1
Ponieważ wiele aplikacji / systemów „nix” jest instalowanych z „./configure; robić; make install „Myślę, że make działa również jako silnik instalacyjny. Jeśli to zrobi, jestem również pewien, że rozwiąże problem z OP.
JBRWilkinson,
Make, ale składnia jest dość niejasna. Do tej pory spotkałem 2 alternatywy: SCons (znacznie łatwiejsze niż Make + makedepend) i narzędzie do automatyzacji tworzenia Makefile (zastrzeżone).
Matthieu M.
@JbRWilkinson ... tak jak powiedziałem make może zrobić prawie wszystko, co chcesz;)
Pemdas,
3

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.

sapporo
źródło
Jest to środowisko ASP.NET / SQL
billy.bob
@ m.edmondson - a następnie cruisecontrol.sourceforge.net jest prawdopodobnie Twoją drogą
bobah
Kolejnym dobrym środowiskiem ciągłej integracji dla ASP.NET jest TeamCity. Korzystałem z CruiseControl i TeamCity i okazało się, że TeamCity jest nieco łatwiejszy w użyciu i nieco bardziej wydajny. Ale może już tak nie być.
RationalGeek
NANT to wariant .NET ANT, którego użyliśmy również jako uzupełnienie Cruise Control, którego nie użyłbym do zbudowania kodu do wdrożenia, w którym zwykle chciałbyś, aby kilka dodatkowych rzeczy było włączonych / poprawionych / parametrów ustawionych i zmienionych itd. . W tym ANT / NANT są dobrzy.
Jon Hopkins
Druga propozycja @Jon Hopkinds - nant doskonale pasuje do twojego środowiska.
JBRWilkinson
0

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:

knife bootstrap ip.address -N aNameForTheServer -r "role[some functionality]"

W moim przypadku niektóre kroki wykonywane przez to pojedyncze polecenie to:

  • Zainstaluj wymagane biblioteki, programy i moduły Python
  • Utwórz nowych użytkowników z określonymi uprawnieniami dostępu
  • Utwórz nowe bazy danych, załaduj wymagany schemat, ustaw własność i prawa dostępu
  • Pobierz i zredaguj kod projektu, a następnie wypisz informacje o konfiguracji
  • Wprowadź wszystko w tryb produkcyjny, uruchamiając serwery bazy danych, konfigurując zadania cron itp.

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.

Sharpie
źródło
0

Z Maven jest to proste w świecie Java

mvn clean deploy

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 deployzachowaniem 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.

Gary Rowe
źródło
0

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.

  1. Synchronizuj kod z kontroli źródła
  2. Usuń głupie rzeczy (pojedyncze pliki konfiguracyjne dla projektów), o których wiesz, że nie będziesz w stanie zbudować wszystkiego.
  3. Zbuduj wszystko (zbudowałbym wszystko, uczyniłem wszystkich braci).
  4. Zapisz swoje błędy, ostrzeżenia i inne rzeczy, ale nie przestawaj budować. (Jeśli jesteś naprawdę mądry, wyodrębnisz nazwisko ostatniej osoby, aby sprawdzić w pliku, który spowodował przerwanie kompilacji i wysłać mu nastygram)
Peter Turner
źródło