]> git.pld-linux.org Git - projects/pld-builder.new.git/blame_incremental - doc/jak-to-dziala.txt
- run make-request.sh from the same dir
[projects/pld-builder.new.git] / doc / jak-to-dziala.txt
... / ...
CommitLineData
11. Developer wysyła zlecenie, z użyciem client/make-request.sh, na adres
2srpm buildera.
3
42. Na koncie srpm buildera skrypt request_handler.py wołany z procmaila obsługuje
5 zlecenie.
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ć
9 cokolwiek, w.p.p wypad
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
16 (www/queue.html).
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
21
223. 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
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
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
37 i) generowanie strony ze statystykami
38
394. Na kontach srpm buildera i bin-builderów chodzi
40 file_sender.py. Monitoruje on kolejki spool/{buildlogs,ftp}. Są w
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
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.
51
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
55 używa tych plików.
56
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).
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
67 W pliki config/rsync-passwords są hasła do rsync, w formacie:
68
69 user@host hasło
70
71 scp działa po kluczach (z ~/.ssh)
72
735. 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.
83
846. 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
87 to papa
88 c) lockowanie building-rpm-for-<builder> (tylko jeden build w chroot
89 na raz)
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
96 tam idx poldka)
97
98Budowanie pakietów:
99 1. ściągnięcie srpm
100 2. instalacja srpm
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.
104 4. budowanie
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.
108 7. upgrade
This page took 0.027608 seconds and 4 git commands to generate.