Koschei je služba tzv. “Průběžné integrace” (angl. Continuous Integration) pro soubory RPM, určená primárně softwarovým vývojářům. Umožňuje jim rychle nacházet a opravovat chyby. V současné době je Koschei podporován pouze ve Fedoře, ale mohou z něj prospívat i jiné platformy (více pod otázkou č. 3). Koschei sleduje změny závislostí balíčků v Rawhide (vývojářská, experimentální verze Fedory). Balíčky, jejichž závislosti se mění moc často, se automaticky sestaví znovu, jelikož ty představují největší riziko vzniku chyb. Koschei zaznamenává historii těchto změn a ukazuje současný stav.
Koschei by se dal označit jako velmi raný testovací nástroj. Pokud tedy má váš tým kvalitáře, ti s ním pracovat sice nebudou, nicméně kvalita vašeho kódu přesto vzroste.
Mikolaj Izdebski, softwarový inženýr ze společnosti Red Hat, nám jako jeho autor řekne o Koschei něco více.
1. Jaký problém měl tento projekt původně vyřešit?
Původní funkcí bylo ulehčit práci našeho týmu, který má na starosti údržbu balíčků. V roce 2012 se dva naši zaměstnanci starali o více než 300 balíčků pro Fedoru a Red Hat Enterprise Linux 7. Všechny tyto bylíčky byly navzájem propojené různými závislostmi, a každá změna znamenala risk vzniku chyb.
Jako návrh řešení jsem vytvořil návrh skriptu, který by každou noc znovu sestavil několik balíčků. Když vývojář přišel ráno do práce, přečetl si v emailu zprávu informující o tom, zda se vše podařilo či ne. Koncept se ukázal být užitečným, a postupně se zalíbil i dalším týmům. Takový byl začátek.
2. Jak se tento projekt vyvíjel?
2012 - zrodil se nápad a ověření konceptu ve formě velmi jednoduchého skriptu
2013 - Koschei se rozšířil do dalších týmů
2014 - začali jsme Koschei stavět znovu od základů a přemodelovali jsme jeho architekturu
2015 - Koschei se dostal do produkce a stal se z něj oficiálně podporovaná služba pro Fedoru
2016 - byla přidána podpora pro paralelní sledování více vydání Fedory
V průběhu vývoje se vyskytl problém s nedostatkem hardware. Namísto vytvření nového hardware modelu jsme ale chtěli použít již existující systém. Jako ideální řešení se nabídlo Koji, které balíčky také staví, ale má navíc spoustu nevyužitého hardware potenciálu.
3. Jaké jsou současné funkce vašeho projektu?
Koschei hledá balíčky, které se nepodařilo zkompilovat ze zdrojového do strojového kódu (alias FTBFS, angl. Fails To Build from Source) tím, že se je sám pokusí sestavit z nejnovějšího dostupného kódu v Koji (build systém pro Fedoru). Pro používání Koschei ale Koji klienta nepotřebujete. Stačí navštívit [Koschei] webové rozhraní, přidat váš balíček do naší databáze, a požádat o odebírání notifikací.
Kromě sledování těchto emailových upozornění, uživatelé se také mohou pustit do oprav chyb, zvýrazněných na našem webovém rozhraní červeně.
Koschei slouží nejen správcům balíčků ve Fedoře, ale též upstreamovým projektům (spolupracujícím s Fedorou), které mohou testovat svá nová vydání před samotným zveřejněním.
Koschei funguje s jakoukoliv distribucí, která používá RPM, např. CentOS nebo openSUSE. I systémy jako je Mageia mohou teoreticky využívat Koschei. Pokud se totiž určitý balíček nedaří sestavit v Mageie, jeho vývojáři jej můžou nahrát do Koschei a zjistit, zda to nejde ani ve Fedoře. Pokud se to nedaří ani tam, jedná se o společnou chybu a vývojáři obou systémů mohou na jejím odstranění spolupracovat. Pokud ale balíček funguje ve Fedoře, jedná se o chybu v systému Mageia.
4. Jaké jsou další kroky?
Rádi bychom rozšířili využití Koschei ve Fedoře. V současné době je v něm registrována pouze třetina balíčků Fedory; hlavním důvodem je nedostatek povědomí o našem projektu. Naším cílem je zajistit automatickou registraci všech balíčků Fedory, tak aby jejich správci nemuseli registrovat každý balíček zvlášť, jak je tomu teď.
Jiným, trochu dlouhodobějším cílem, je umožnění testování scratch builds (zkušebních, dočasných sestavení). Pokud chcete něco nyní testovat v Koschei, musíte balíček skutečně sestavit, a to není vždy vhodné. Možná využití pro tuto funkci jsou testování nových verzí (manuálně nebo automaticky skrz monitorování upstreamových vydání), testování změn způsobujících selhání jiných komponent, atp.
5. Pokud by vám čtenář mohl pomoci s jednou věcí, co by to bylo?
Řekněte o Koschei svým kolegům a známým a používejte jej! Pokud víte o někom, komu Koschei pomohlo nebo kdo jej začal úspěšně používat, šiřte to dál! Vývojář neslyší nic raději, než to, jak je jeho produkt úspěšný či prospěšný.
Mezi týmy, jež Koschei úspěšně začlenily do svých pracovních postupů, patří Eclipse, PHP, nebo Java. V případě jakýchkoliv dotazů pište na mizdebsk@redhat.com (v angličtině nebo polštině) nebo na msimacek@redhat.com (v češtině).
Další příspěvky o Koschei (v anglickém jazyce):
- Blog Marcely Mašlaňové o projektu Koschei
- Remi Collet blog o používání Koschei v Průběžné integraci PHP
- Zpráva vedoucího Fedora Projektu, Matthew Millera, o Koschei v produkci
- Upstream Github repozitář Koschei