Automatyzacja budowania (było:Re: Biuletyn PLD nr 8)

Tomasz Kłoczko kloczek w rudy.mif.pg.gda.pl
Pon, 7 Wrz 1998, 13:09:06 CEST


On Mon, 7 Sep 1998, Wojtek Slusarczyk wrote:

> On Sun, 6 Sep 1998 hector w kki.net.pl wrote:
> 
> > Pozwoliłem sobie trochę zmienić oryginalne brzmienie, ale to jest imho
> > bardziej zrozumiałe.  A Norton Comander może być znakiem zastrzeżonym
> > (tm).
> 
> Qrde... 15-ty raz bede go kompilowal ;( Ale z ta "powloka" zamisat "shell"
> to ja bym sie wstrzymal...

Czy wiesz już dlaczego pkompilacja powinna być robiona automatycznie ? :)

Wczoraj wracając z kina wieczorkiem trochę nad tym myslałem i już mam
mniej więcej ogólny zarys tego jak to się powinno odbywać. Nie mam jeszcze 
schematu organizacyjnego na to jak powinno obywać się zgłaszanie
materiałów i jak to uwieżytelniać. Ale może od początku.

Pewne obserwacje  przemieszane z założeniami:
- kompilacja jest nudna i długotrwała,
- do wyników kompilacji powinien mieć dostęp każdy kto chce, czyli
  wszystko powinno się odbywać na oczach każdego kto może być tym
  zainteresowany,
- powinien istnieć zestandaryzowany sposób zgłaszania zasobu do
  przetworzenia żeby maksymalnie uprościć całą procedurę, a niektórzy mogą
  mieć opory przy kontaktowamiu się personalnie z osobami
  zarządzajacymi całością (językowe lub innej natury),
- całośc musi być dostępna 24h/dobę i czynnik ludzki musi być ograniczony
  jeśli chodzi o zarządzanie do minimum,
- musi być znane środowisko w jakim wszystko będzie kompilowane,
- obieg informacji ma mieć możliwość przekazywania niektórych informacji
  automatycznie pocztą.

Co nam da powyższe ?

Po pierwsze same kompilaty będą o wiele bardziej wiarygodne gdyż wiadomo
będzi w jakim środowiku wszysko się będzie odbywać. Każdy w razie czego
będzie mógł zajrzeć do logów kompilacji i na tej podstawie szukać
ewentualnych przyczyn błędów. Całość będzie niezależna od ludzi
zarządzających całośći. Np. w tej chwili pakiety na potrzeby PLD budujemy
we dwujkę z Wojtkiem. Ja może i mam całkiem spore tempo ale gdyby do
takiego automatu miałaby dostęp większa grupa ludzi to całość bardzo łatwo
skalować poprzez dokoprowanie kolejnych ludzi pracujących z
ujednoliconymi prawami i w miarę prostymi zasadami dostępu do całości.

Przy powyższym osoby zajmujące się zorwojem softu (praca nas specami czy
dodawanie patchy czy zupełnie nowych pakietów) nie muszą posiadać konta na
jednostkach budujących co zmniejsza wymagania co do których trzeba zaufać
osobom biorącym udzia w całości. Całość informacji powinna być stosunkowo
przejrzysta nawet dla osób średnio obeznanych z tematyką obniając
poprzeczkę wiedzy dla osób chcących wejśc w powyższe.

Jak to mniej więcej działać ?

O ile będzie to wskazamne to centralny punkt zbierania rzeczy do
przetworzenia bedzie mógł wykorzystywać rozproszone zasoby maszyn wpiętych 
w zepół do budowania kolejkując zadania i przydzielając je na zasadzie:

[klient kompilujący]:

	"właśnie skończyłem kompilację, jestem wolny, jest coś do roboty
         ?"

[jednostka zarządzająca kolejką]:

	(o ile mam coś w kolejce) 
        "masz kolejne zasoby do przetworzenia"
        lub:
        "nic w tej chwili nie ma do roboty. Wchodzisz do kolejki
         jednostek do wykorzystania"

Całość może odbywać się wielotorowo z udziałem rżnych jednostek na różnych
platformach i pozwoli nam wykorzystywać jednostkowe nieielkie zasoby
sumując go w jeden wiekszy, który łatwo będzie się skalował.

Po skończeniu kompilacji klientu budujący automatycznie p[rzekazuje wyniki
kompilacji do głównego punktu w postaci wygenerowanych pakietów pliku z
wyjściem z kompilacji.

Serwer budowania odbiera powyższe i wrzuca do zasobów przetworzonych. Logi
z kompilacji mogą być automatycznie przetworzone pod kontem występowania
pewnycch słów jak error, warning i inne, podkreślając owe fragmenty robiąc
jednocześnie statystykę wystąpienia powyższych w logu kompilacji. Chodzi o
to, że usunięcie niektórych ostrzeżeń w następnym etapie może mieć wpływ
na stabilność pracy programu. Możemy udostępniać całościowe podsumowania
co do ilości ostrzeżeń w kompilacji, co piwinno dodatkowo podniećś
wiarygodniść tego co uzyskujemy w wyniku naszej pracy.

------------------
Podsumowanie
------------------

W pierwszym momencie myślałem, że całóść będzie musiała być robiona
bezpośrednio z notify z CVS ale teraz doszedłem do wniosku, że jezeli już
to notify tylko powinno to być wykorzystywane do wrzucania zasobów do
kolejki (co daje bardziej modularną konstrukcję całości). Powinna istnieć
możliwość wydania polecenia ponownego przebudowania zasobu, która może byc
potrzeba do wykonani w momencie kiedy zostanie stwierdzone, że sasoby na
jednostce kompilującej są niewłąsciwe żeby kompilacja przebiegła
przwidłowo (trzeba będzie poprostu wykonać upgrade na jednostce przed
ponowną kompilacją). Powinna istnieć także bazując na powyższym) możliwość
wydania polecenia przetworzenia wszystkiego od początku.

Nie mam jeszcze koncepcji na to jak uprościć procedurę zgłaszania zasobu
ale tym się nie przejmuje gdyż w momencie kiedy stanie pierwszy serwer
koordynujący całość i pierwszy klient, to po pierwszym etapie pół ręcznego
prowadzenia całości jakaś procedura nie naruszająca zasad bezpieczeństwa
zapewne się sama wyklaruje i IMHO za bardzo nad powyższym nie ma sensu
teraz co mocno dyskutować.

Powyższe to tylko nadal zarys całości, który klaruje się powoli i który po
kawałku prubuję od pewnego czasu implementowac na cenzorze (jako kliencie
i serwerze jednocześnie). W pewnym momencie jak tylko będzie to możliwe
będzie można to ładnie rozproszyć po całej Polsce lub jeszcze szerzej.

Może jestem w błędzie ale wydaje mi się, że powyższe tworzy zupełnie nową
jakość w tym co się dzieje wokół Linuxa. Wymyślono już "Open Source", a to
jest zaczątkiem czegoś co może można nazwać "Open Development" lub "Open
Building".

O ile będziemy mieli powypełniane pola Vendor to można się dogadywać z
ludźmi na listach dyskusyjnych żeby automatycznie im przekazywać wyniki
kompilacji, co może im pomóc choćby w usuwaniu niedoróbek (warningi)
czy innych rzeczy tworząc tym samym pełniejszą struktórę całości. Powysze
wydaje mi się że także tworzy zupełnie nowe możliwości które staną się
zupełnie jesne w momencie kiedy zacznie to funkcjonować.

Powyższe także można w jakiś sposób powiązać półautomatycznie lub
automatycznie z bug trackig systemem.
Jedną z takich możliwosci o które można na pewno kiedyś uzupełnić powyższe
jest np. analizator speców, który poprzwiałby je do jakiejś standardowej
postaci.

kloczek
-----------------------------------------------------------
*Ludzie nie mają problemów, tylko sobie sami je stwarzają*
-----------------------------------------------------------
Tomasz Kłoczko, sys adm @zie.pg.gda.pl|*e-mail: kloczek w rudy.mif.pg.gda.pl*



Więcej informacji o liście dyskusyjnej pld-devel-pl