1 1. Developer wysy³a zlecenie, z u¿yciem client/make-request.sh, na adres
4 2. Na koncie srpm buildera skrypt request_handler.py wo³any z procmaila obs³uguje
6 a) sprawdza podpis gpg, wyci±ga wszystkie Good sinature from <...>
8 b) szuka w swoim acl.conf czy osoba z Good signature from mo¿e robiæ
10 c) xml-parsuje zlecenie (request.py)
11 i. je¶li jest to <notifcation ...>, sparawdza uprawnienie
12 notify:<builder>, i je¶li OK, to zmienia odpowiednio
13 kolejkê spool/req_queue. Je¶li wszystki buildery
14 zakoñczy³y ju¿ budowanie danej grupy usuwane s± src rpmy
15 z www/srpms/<group-id>/. Generuje stronê ze statystykami
17 ii. je¶li jest to <group ...> to sprawdza czy u¿ytkownik,
18 który wys³a³ zlecenie ma uprawnienia src:<nazwa-src-buildera>,
19 oraz binary:<builder> dla ka¿dego buildera dla którego jest
20 zlecenie. Je¶li OK, to wrzuca zlecenie do spool/queue
22 3. Na koncie srpm buildera z crona chodzi skrypt srpm_builder.py.
23 a) Czyta spool/queue, je¶li s± tam jakie¶ zlecenia, sortuje wg. priorytetu
24 (ni¿szy numer == wa¿niejsze zlecenie), a nastêpnie sortuje wg. czasu
25 przybycia zlecenia (starsze == wa¿niejsze), wyci±ga je z kolejki i zapisuje
27 b) Obs³uguje tylko <group ...>.
28 c) Buduje w chroot wszystkie pakiety z grupy, kolejkuj±c pliki w spool/ftp/
29 oraz spool/buildlogs/. Dodatkowo srpmy s± wrzucane do www/srpms/<group-id>/
30 sk±d ci±gn± je bin-buildery.
31 d) je¶li nie powiod³o siê budowanie ¿adnego pakietu to wypad
32 e) zleceniu nadawany jest numer
33 f) zlecenie jest wrzucane do spool/req_queue
34 g) kolejka jest podpisywana kluczem srpm buildera, gzipowana i wrzucana do
36 h) numer zapisywany jest w www/max_req_no
37 i) generowanie strony ze statystykami
39 4. Na kontach srpm buildera i bin-builderów chodzi
40 file_sender.py. Monitoruje on kolejki spool/{buildlogs,ftp}. S± w
43 faa1f592-437f-446d-b1e6-ac41976c5775
44 faa1f592-437f-446d-b1e6-ac41976c5775.info
45 faa1f592-437f-446d-b1e6-ac41976c5775.desc
47 Plik .desc jest kontrolny dla file_sender.py. Zawiera email zlecaj±cego
48 (do alarmowania), czas skolejkowania (pliki s± wysy³ane dok³adnie
49 w kolejno¶ci wrzucania do kolejki), oraz cel (url), gdzie nale¿y
52 Plik .info jest tylko dla buildlogów. Je¶li taki plik istnieje to jest
53 przesy³any po przes³aniu w³a¶ciwego pliku (tego bez rozszerzenia). Jest
54 w nim zapisany status buildloga (OK|FAIL). helpers/buildlogs-mover.sh
57 Pliki .info i .desc koñcza siê lini±, zawieraj±c± s³owo END. Skrypty
58 nic z nimi nie robi± je¶li nie ma tam tego s³owa (transmisja
61 URLe wspierane jako cel to:
63 rsync://user@host/modul/sci/ezka/plik
64 scp://user@host/sciezka/plik
65 /absolutna/sciezka/do/pliku
67 W pliki config/rsync-passwords s± has³a do rsync, w formacie:
71 scp dzia³a po kluczach (z ~/.ssh)
73 5. Na koncie bin-buildera chodzi skrypt request_fetcher.py.
74 a) ¶ci±ga $control_url/max_req_no i porównuje ze spool/last_req_no.
75 je¶li takie same to wypad.
76 b) ¶ci±ga $control_url/queue.gz, dekompresuje, sprawdza podpis (w
77 config/acl.conf dla podpisuj±cego u¿ytkownika musi byæ
78 "sign_queue:all") [sidenote: konto bin buildera nie potrzebuje
79 kluczy gpg innych ni¿ swój i srpm buildera, nie potrzebuje te¿
80 acl.conf pe³nego, tylko srpm_builder z sign_queue:all]
81 c) wrzuca zlecenia do spool/queue
82 d) zapisuje najwiêkszy numer zlecenia wrzuconego w spool/last_req_no.
84 6. Na koncie bin-buildera chodzi skrypt rpm_builder.py.
85 a) sprawdzenie loadu, je¶li za wysoki to papa
86 b) lockowanie build-slot-N, gdzie N < job_slots, je¶li sie nie da
88 c) lockowanie building-rpm-for-<builder> (tylko jeden build w chroot
90 d) Czyta spool/queue, je¶li s± tam jakie¶ zlecenia, sortuje wg. priorytetu
91 (ni¿szy numer == wa¿niejsze zlecenie), a nastêpnie sortuje wg. czasu
92 przybycia zlecenia (starsze == wa¿niejsze), wyci±ga je z kolejki i zapisuje
94 e) buduje pakiety, wrzuca pliki do spool/{buildlogs,ftp}. Je¶li nie ma flagi
95 test-build to pakiety wrzuca te¿ do /spools/ready/ w chroot (i generuje
101 3. próba budowania (z --nobuild), wy³apanie "foo is needed by ...",
102 instalacja wszystkich takich foo. UWAGA: to nie zawsze dzia³a, np. je¶li
103 rpm wywali siê z braku pliku do %include. trzeba napisaæ osobny parser.
105 5. je¶li nie test-build to przerzucenie pakietów do /spools/ready/
106 6. je¶li upgrade, to próba upgrejdu, wywalenie wszystkich przeszkadzaj±cych
107 pakietów, chyba, ¿e trzeba by wywaliæ poldka, lub rpm-build.