FreeBSD Ports Tinderbox + Subversion

Ha az ember fia FreeBSD portokkal dolgozik, elobb vagy utobb beleutkozik a Tinderbox fogalmaba. Kulonosen azota, miota Ion-Mihai Tetcu (itetcu@) munkassaganak koszonhetoen megszuletett QA Tindy, a frissulo portok faradhatatlan minosegellenore. Ezaltal erezhetoen javult a portok minosege, mostansag mar nehez hibas portokat felcsempeszni :) Ezzel egyutt viszont a karbantartoktol is nagyobb odafigyelest kivan meg.

Mivel nem szeretek fercmunkat vegezni (sem levelet kapni QAT feladoval), ezert igyekszem rendesen tesztelni a portjaimat, es erre a celra telepitettem magamnak is egy ilyen Tinderboxot. A gond viszont, hogy sokan szeretnek meg ugyanigy tesztelni a portjaikat, de nem tudjak megtenni, mert egy ilyen rendszer osszerakasa nem egyszeru. Megkovetel nemi hardvert es szoftvert, illetve nem art, ha folyamatosan fut, mert nehany port forditasa bizony nem ket perc. Mellette raadasul nem is nagyon lehet normal asztali feladatokra hasznalni a gepunket, mert elegge IO intenziv.

Ezert elhataroztam, hogy megprobalom megosztani a Tinderboxomat mas erdeklodokkel is anelkul, hogy tulbonyolitanam a velejaro adminisztraciot es kozvetlen hozzaferest adnek a rendszerhez. A Tinderbox eleve tamogat tobb felhasznalot es van egy szep webes felulete, viszont a felhasznalokhoz tartozo portfak hozzaferese nem megoldott. A klasszikus megkozelites szerint ekkor a felhasznalok kapnak egy-egy shell accountot a gepre, igy kozvetlenul elerik es modosithatjak a portokat. Ezzel nekem alapvetoen ket gondom van: egyreszt ehhez az operacios rendszer szintjen kell letrehozni felhasznalokat, esetleg SSH kulcsokat adminisztralni, nincs valodi integracio a Tinderbox-szal; masreszt a felhasznalok konnyen elbarangolhatnak a rendszerunkben, es ezt csak kulonfele izolacios technikak (peldaul jail) alkalmazasaval lehet elkerulni.

Ekkor jott az otlet, hogy esetleg akkor tehetnek Subversiont ala. Az a lenyeg, hogy keszitek egy SVN repository-t a gepen es ezt napi rendszeresseggel frissitem CVSup-bol. Ekkor kapok egy import branch-et, ahova egy szkript pakolja a CVS repository valtozasait (hasonloan a Projektben mar amugyis mukodo svn2cvs exportalashoz). Amikor letrehozok egy uj felhasznalot, lemasolom ezt a branch-et, amelyet checkoutolva mindenki kap odahaza (es a Tinderbox-ban) egy szep sajat portfat. Kesobb a felhasznalok ezeket a importalt fabol torteno merge-olessel tudjak frissiteni.

Termeszetesen minden valtoztatast kulon committolni kell, de ezen keresztul viszont kapunk egy reszletes logot arrol, ki mivel mit csinalt. (Nem beszelve arrol, hogy igy a felhasznalok akar hosszabb ideig is karban tudnak tartani maguknak kulonfele patcheket.) Minden commit utan a Tinderbox egybol lehuzza a valtozasokat (post-commit hook), igy utana mar egybol tesztelhetoek is a modositott portok. A Tinderbox MySQL vagy PostgreSQL adatbazisban tarolja az adatait, tobbek kozott a felhasznalokat. Hogy ne kelljen kulon adminisztralni a Tinderbox es a Subversion repository felhasznaloit, az SVN SASL2 tamogatasaval meg lehet oldani az integracio kerdeset is. A SASL lehetove teszi, hogy a hitelesitest adatbazison keresztul vegezzuk, igy eleg csak a megfelelo adatokat (adatbazis, lekerdezes) neki atadni es mar mukodik is!

Az eddigi tapasztalatok szerint viszont a FreeBSD portfa oriasi, rengeteg konyvtarat es allomanyt tartalmaz es a Subversion (kliens) eleg lassu, minden muveletnel alaposan vegigszkennelni ezt a sok allomanyt. Ezek a problemak leginkabb a CVS es SVN kozti mozgatasnal jonnek ki, mivel itt tulajdonkeppen egy "addremove" muveletet kell csinalni (ez peldaul Mercurialbol ismeros lehet mindenkinek). A naiv implementacioval kb. negyed ora egy atlagos import (bar ezt partial ports freeze idejen mertem, majd most, a complete ports thaw utan jon az igazi moka...), amelyet egy kis ugyekedessel sikerult levinnem kb. a harmadara. A felhasznalok letrehozasa is kozel egy oras muvelet, szerencsere ez nem tulsagosan gyakori, es most otletem sincs a gyorsitasara.

Egyelore bizakodo vagyok, kivancsi leszek a tovabbi tapasztalatokra!

Hozzászólások

Nem ismerem ezt a rendszert, de nem lenne celszerubb osszerakni egy virtualis gep image-et, amibe fel van teve egy ilyen? Utana akinek szuksege van ra, letolti a gepere, es hasznalja.. nem ritka, hogy nehezen telepitheto kornyezeteket igy terjesszenek.

--
I can't believe Steve Jobs's liver is replaceable but the battery in my iPhone is not. - sickipedia

Jo otlet, ketto hibaja van:
1) a virtualis gepnel eleve az IO intenziv (ertsd: winyo) folyamatok lassabbak a valodi gepeknel
2) es amugy is tomentelen vas kell egy ilyen ala. Komolyan.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Erre az svn+SASL-re tudsz mutatni valami leirast? Erdekelne.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Alapvetoen a Version Control with Subversion c. konyv alapjan indultam el, aztan amelyet SQL adatbazisra alkalmaztam egy Postfix SASL Howto segitsegevel (ezen belul "Cyrus SASL Plugins - auxiliary property plugins", majd "The sql plugin"). Egyebkent ugy tunt, nem vagyok egyedul, mas is probalkozott mar vele.