]>
Commit | Line | Data |
---|---|---|
154acfaa | 1 | 1. Developer wysyła zlecenie, z użyciem client/make-request.sh, na adres |
bebad60f MM |
2 | srpm buildera. |
3 | ||
154acfaa | 4 | 2. Na koncie srpm buildera skrypt request_handler.py wołany z procmaila obsługuje |
bebad60f | 5 | zlecenie. |
154acfaa ER |
6 | a) sprawdza podpis gpg, wyciąga wszystkie Good sinature from <...> |
7 | jeśli brak -- wypad | |
8 | b) szuka w swoim acl.conf czy osoba z Good signature from może robić | |
07c9664b | 9 | cokolwiek, w.p.p wypad |
10 | c) xml-parsuje zlecenie (request.py) | |
154acfaa ER |
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 | |
07c9664b | 16 | (www/queue.html). |
154acfaa ER |
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 | |
bebad60f MM |
21 | |
22 | 3. Na koncie srpm buildera z crona chodzi skrypt srpm_builder.py. | |
154acfaa ER |
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 | |
26 | kolejkę. | |
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 | |
bebad60f MM |
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 | |
35 | www/queue.gz | |
36 | h) numer zapisywany jest w www/max_req_no | |
07c9664b | 37 | i) generowanie strony ze statystykami |
bebad60f | 38 | |
154acfaa ER |
39 | 4. Na kontach srpm buildera i bin-builderów chodzi |
40 | file_sender.py. Monitoruje on kolejki spool/{buildlogs,ftp}. Są w | |
bebad60f MM |
41 | nich pliki, jak: |
42 | ||
43 | faa1f592-437f-446d-b1e6-ac41976c5775 | |
44 | faa1f592-437f-446d-b1e6-ac41976c5775.info | |
45 | faa1f592-437f-446d-b1e6-ac41976c5775.desc | |
46 | ||
154acfaa ER |
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 | |
50 | przesłać plik. | |
bebad60f | 51 | |
154acfaa ER |
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 | |
bebad60f | 54 | w nim zapisany status buildloga (OK|FAIL). helpers/buildlogs-mover.sh |
154acfaa | 55 | używa tych plików. |
bebad60f | 56 | |
154acfaa ER |
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 | |
59 | niedokończona). | |
bebad60f MM |
60 | |
61 | URLe wspierane jako cel to: | |
62 | ||
63 | rsync://user@host/modul/sci/ezka/plik | |
64 | scp://user@host/sciezka/plik | |
65 | /absolutna/sciezka/do/pliku | |
66 | ||
154acfaa | 67 | W pliki config/rsync-passwords są hasła do rsync, w formacie: |
bebad60f | 68 | |
154acfaa | 69 | user@host hasło |
bebad60f | 70 | |
154acfaa | 71 | scp działa po kluczach (z ~/.ssh) |
bebad60f MM |
72 | |
73 | 5. Na koncie bin-buildera chodzi skrypt request_fetcher.py. | |
154acfaa ER |
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ć | |
bebad60f | 78 | "sign_queue:all") [sidenote: konto bin buildera nie potrzebuje |
154acfaa ER |
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] | |
bebad60f | 81 | c) wrzuca zlecenia do spool/queue |
154acfaa | 82 | d) zapisuje największy numer zlecenia wrzuconego w spool/last_req_no. |
bebad60f MM |
83 | |
84 | 6. Na koncie bin-buildera chodzi skrypt rpm_builder.py. | |
154acfaa ER |
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 | |
bebad60f MM |
87 | to papa |
88 | c) lockowanie building-rpm-for-<builder> (tylko jeden build w chroot | |
89 | na raz) | |
154acfaa ER |
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 | |
93 | kolejkę. | |
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 | |
bebad60f MM |
96 | tam idx poldka) |
97 | ||
154acfaa ER |
98 | Budowanie pakietów: |
99 | 1. ściągnięcie srpm | |
bebad60f | 100 | 2. instalacja srpm |
154acfaa ER |
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. | |
bebad60f | 104 | 4. budowanie |
154acfaa ER |
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. | |
bebad60f | 108 | 7. upgrade |