]> git.pld-linux.org Git - projects/pld-builder.new.git/blame - doc/jak-to-dziala.txt
- run make-request.sh from the same dir
[projects/pld-builder.new.git] / doc / jak-to-dziala.txt
CommitLineData
154acfaa 11. Developer wysyła zlecenie, z użyciem client/make-request.sh, na adres
bebad60f
MM
2srpm buildera.
3
154acfaa 42. 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
223. 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
394. 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
735. 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
846. 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
98Budowanie 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
This page took 0.718183 seconds and 4 git commands to generate.