X-Git-Url: https://git.tld-linux.org/?p=TLD.git;a=blobdiff_plain;f=pld-builder.new%2Fjak-to-dziala.txt;fp=pld-builder.new%2Fjak-to-dziala.txt;h=0000000000000000000000000000000000000000;hp=4c2c9eb1668c8f8d8ce1740b656e0ecfabfaeff2;hb=3dc53b6865f716904ad4d02e934e04b3d4855c32;hpb=b235722fd546915a60800f2660d76f684d6f1445 diff --git a/pld-builder.new/jak-to-dziala.txt b/pld-builder.new/jak-to-dziala.txt deleted file mode 100644 index 4c2c9eb..0000000 --- a/pld-builder.new/jak-to-dziala.txt +++ /dev/null @@ -1,108 +0,0 @@ -1. Developer wysyła zlecenie, z użyciem client/make-request.sh, na adres -srpm buildera. - -2. Na koncie srpm buildera skrypt request_handler.py wołany z procmaila obsługuje - zlecenie. - a) sprawdza podpis gpg, wyciąga wszystkie Good sinature from <...> - jeśli brak -- wypad - b) szuka w swoim acl.conf czy osoba z Good signature from może robić - cokolwiek, w.p.p wypad - c) xml-parsuje zlecenie (request.py) - i. jeśli jest to , sparawdza uprawnienie - notify:, i jeśli OK, to zmienia odpowiednio - kolejkę spool/req_queue. Jeśli wszystki buildery - zakończyły już budowanie danej grupy usuwane są src rpmy - z www/srpms//. Generuje stronę ze statystykami - (www/queue.html). - ii. jeśli jest to to sprawdza czy użytkownik, - który wysłał zlecenie ma uprawnienia src:, - oraz binary: dla każdego buildera dla którego jest - zlecenie. Jeśli OK, to wrzuca zlecenie do spool/queue - -3. Na koncie srpm buildera z crona chodzi skrypt srpm_builder.py. - a) Czyta spool/queue, jeśli są tam jakieś zlecenia, sortuje wg. priorytetu - (niższy numer == ważniejsze zlecenie), a następnie sortuje wg. czasu - przybycia zlecenia (starsze == ważniejsze), wyciąga je z kolejki i zapisuje - kolejkę. - b) Obsługuje tylko . - c) Buduje w chroot wszystkie pakiety z grupy, kolejkując pliki w spool/ftp/ - oraz spool/buildlogs/. Dodatkowo srpmy są wrzucane do www/srpms// - skąd ciągną je bin-buildery. - d) jeśli nie powiodło się budowanie żadnego pakietu to wypad - e) zleceniu nadawany jest numer - f) zlecenie jest wrzucane do spool/req_queue - g) kolejka jest podpisywana kluczem srpm buildera, gzipowana i wrzucana do - www/queue.gz - h) numer zapisywany jest w www/max_req_no - i) generowanie strony ze statystykami - -4. Na kontach srpm buildera i bin-builderów chodzi - file_sender.py. Monitoruje on kolejki spool/{buildlogs,ftp}. Są w - nich pliki, jak: - - faa1f592-437f-446d-b1e6-ac41976c5775 - faa1f592-437f-446d-b1e6-ac41976c5775.info - faa1f592-437f-446d-b1e6-ac41976c5775.desc - - Plik .desc jest kontrolny dla file_sender.py. Zawiera email zlecającego - (do alarmowania), czas skolejkowania (pliki są wysyłane dokładnie - w kolejności wrzucania do kolejki), oraz cel (url), gdzie należy - przesłać plik. - - Plik .info jest tylko dla buildlogów. Jeśli taki plik istnieje to jest - przesyłany po przesłaniu właściwego pliku (tego bez rozszerzenia). Jest - w nim zapisany status buildloga (OK|FAIL). helpers/buildlogs-mover.sh - używa tych plików. - - Pliki .info i .desc kończa się linią, zawierającą słowo END. Skrypty - nic z nimi nie robią jeśli nie ma tam tego słowa (transmisja - niedokończona). - - URLe wspierane jako cel to: - - rsync://user@host/modul/sci/ezka/plik - scp://user@host/sciezka/plik - /absolutna/sciezka/do/pliku - - W pliki config/rsync-passwords są hasła do rsync, w formacie: - - user@host hasło - - scp działa po kluczach (z ~/.ssh) - -5. Na koncie bin-buildera chodzi skrypt request_fetcher.py. - a) ściąga $control_url/max_req_no i porównuje ze spool/last_req_no. - jeśli takie same to wypad. - b) ściąga $control_url/queue.gz, dekompresuje, sprawdza podpis (w - config/acl.conf dla podpisującego użytkownika musi być - "sign_queue:all") [sidenote: konto bin buildera nie potrzebuje - kluczy gpg innych niż swój i srpm buildera, nie potrzebuje też - acl.conf pełnego, tylko srpm_builder z sign_queue:all] - c) wrzuca zlecenia do spool/queue - d) zapisuje największy numer zlecenia wrzuconego w spool/last_req_no. - -6. Na koncie bin-buildera chodzi skrypt rpm_builder.py. - a) sprawdzenie loadu, jeśli za wysoki to papa - b) lockowanie build-slot-N, gdzie N < job_slots, jeśli sie nie da - to papa - c) lockowanie building-rpm-for- (tylko jeden build w chroot - na raz) - d) Czyta spool/queue, jeśli są tam jakieś zlecenia, sortuje wg. priorytetu - (niższy numer == ważniejsze zlecenie), a następnie sortuje wg. czasu - przybycia zlecenia (starsze == ważniejsze), wyciąga je z kolejki i zapisuje - kolejkę. - e) buduje pakiety, wrzuca pliki do spool/{buildlogs,ftp}. Jeśli nie ma flagi - test-build to pakiety wrzuca też do /spools/ready/ w chroot (i generuje - tam idx poldka) - -Budowanie pakietów: - 1. ściągnięcie srpm - 2. instalacja srpm - 3. próba budowania (z --nobuild), wyłapanie "foo is needed by ...", - instalacja wszystkich takich foo. UWAGA: to nie zawsze działa, np. jeśli - rpm wywali się z braku pliku do %include. trzeba napisać osobny parser. - 4. budowanie - 5. jeśli nie test-build to przerzucenie pakietów do /spools/ready/ - 6. jeśli upgrade, to próba upgrejdu, wywalenie wszystkich przeszkadzających - pakietów, chyba, że trzeba by wywalić poldka, lub rpm-build. - 7. upgrade