]> git.pld-linux.org Git - projects/pld-builder.new.git/blob - doc/jak-to-dziala.txt
mkstemp returns file descriptor, convert to file object
[projects/pld-builder.new.git] / doc / jak-to-dziala.txt
1 1. Developer wysy³a zlecenie, z u¿yciem client/make-request.sh, na adres
2 srpm buildera.
3
4 2. 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
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
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
39 4. 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
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.
83
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
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
98 Budowanie 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.041525 seconds and 3 git commands to generate.