X-Git-Url: https://git.tld-linux.org/?p=TLD.git;a=blobdiff_plain;f=pld-builder.new%2Fuser-manual.txt;fp=pld-builder.new%2Fuser-manual.txt;h=e8a4e612821dba3cad83cffa82bf8079529c590e;hp=0000000000000000000000000000000000000000;hb=90809c8fec988489786ce00247d9a4150070748b;hpb=ab3934fab858112cd552359b18cb980ea07c310b diff --git a/pld-builder.new/user-manual.txt b/pld-builder.new/user-manual.txt new file mode 100644 index 0000000..e8a4e61 --- /dev/null +++ b/pld-builder.new/user-manual.txt @@ -0,0 +1,144 @@ +Installation instructions. + +1. Accounts + +Builder needs account for it's needs. Account should be shared for all builders, +which build binary packages on specified host. This allows for better +resources managment (hint: variable job_slots in configuration). + +However, SRPMS builder should use different account. + +We will call accounts: bin_builder and srpms_builder. + +2. Requirements + +Both: + sending mail + gpg + scp or/and rsync (sending buildlogs and files to ftp) + access to chroots + +srpms_builder: + mail box + procmail + posibillity to serve files via http + cvs connections + ftp or http connections (distfiles) + +bin_builder: + http connections + +access to chroots via sudo (sudoers): + +srpms_builder ALL = NOPASSWD: \ + /usr/sbin/chroot /path/to/chroot * + +bin_builder ALL = NOPASSWD: \ + /usr/sbin/chroot /path/to/chroot1 *, \ + /usr/sbin/chroot /path/to/chroot2 * + +3. Scripts installations + +Scripts *have* to be in ~/pld-builder.new/, checked out from CVS. + +4. Installation of queues + +cd ~/pld-builder.new +./admin/fresh-queue.sh y + +5. Chroots setup +poldek.conf: + +source = local,pri=1 /spools/ready/ +source = main-test,noauto,pri=2 ftp://ftp.pld-linux.org/dists/th/test/i686/RPMS/ +source = main-ready,pri=3 ftp://ftp.pld-linux.org/dists/th/ready/i686/RPMS/ +source = main-ug,pri=4 ftp://ftp.pld-linux.org/dists/th/updates/i686/RPMS/ +source = main,pri=5 ftp://ftp.pld-linux.org/dists/th/PLD/i686/RPMS/ +particle_install = no +greedy = yes +rpmdef = _excludedocs 1 +cachedir = /spools/poldek/ +keep_downloads = yes + +Preinstalled packages: + +bin_builder: + rpm-build poldek shadow net-tools which + +srpms_builder: + bin_builder+ + cvs wget rpm-perlprov rpm-php-pearprov rpm-pythonprov + +both: user builder + +both: ~builder/rpm/{SPECS,SOURCES,RPMS,SRPMS,BUILD} + +srpms_build: additionally has to have SPECS and SOURCES checkouted from CVS +in SPECS it has to have builder, additional-md5sum and mirrors + +both: folders /spools/poldek/ /spools/ready/ + +Wszystko to robi automagicznie admin/install-chroot.sh +All that stuff can be done automaticly with admin/install-chroot.sh. + +[[...]] + + +100. cron jobs + +srpms_builder: + src-builder.sh + file-sender.sh + +bin_builder: + request-fetcher.sh + load-balancer.sh + file-sender.sh + +*Very* good idea is to execute tmpwatch for each builder.: +5 3 * * * sudo chroot $HOME/chroots/chroot-i686/ tmpwatch -m 200 /spools/ready/ +(autentic example). Of course, example cron item above should be placed for each chroot +inside account. Tmpwatch have to be installed inside. In other case, You have to clean it +manually. + +Example for bin builder: +* * * * * $HOME/pld-builder.new/bin/request-fetcher.sh +* * * * * $HOME/pld-builder.new/bin/load-balancer.sh +* * * * * $HOME/pld-builder.new/bin/file-sender.sh +30 3 * * * $HOME/pld-builder.new/bin/maintainer.sh + +Example for source builder: +* * * * * $HOME/pld-builder.new/bin/src-builder.sh +* * * * * $HOME/pld-builder.new/bin/file-sender.sh +30 3 * * * $HOME/pld-builder.new/bin/maintainer.sh + +101. procmail + +srpms_builder: + +:0 +* ^X-New-PLD-Builder: +|~/pld-builder.new/bin/request-handler.sh + +:0 +!admin@somehere + +bin_builder + +:0 +!admin@somwhere + +102. httpd + +Directory ~/pld-builder.new/www/, in srpm_builder account, have to be accessibble +via http (control_url in bin_builder configuration) + +103. src builder + +Automat can send informaction (notify) between bin-builders and src-builders +via e-mail or via http (POST METHOD). + +To use HTTP POST, one should run (src_builder side): +./request_handler_server.py +On other side (bin-builders): +notify_url = http://some-server.pl:1234/ +