Proč a jak jsme si vylepšili Gitlab?

Až se budete někdy přehrabovat v rozšířeních pro Gitlab, dívejte se pozorně, narazíte tam totiž na naši stopu. Po přechodu ze Stashe nám v Gitlabu chybělo pár funkcionalit. Tak jsme udělali extension do prohlížeče, který je tam přidal. Chcete vědět jak a proč? Tak čtěte dále. Chcete spíš praktickou ukázku? Vyzkoušejte si rozšíření rovnou tady.

Jak to vzniklo?

Určitě všichni znáte tu situaci, kdy začnete používat novou věc. Ať už je to nový mobil, technologie nebo služba, vy se novinku snažíte používat stejně jako to, na co jste byli do té doby zvyklí. A zjišťujete, že to tak úplně nejde.

Vůči nové věci to může způsobit až trochu averzi, obzvlášť pokud ke změně nedošlo úplně dobrovolně. Ano, ta nová věc sice poskytuje bambilion nových funkcí a možností, které zatím ani nevíte, jak použijete. Sice jde o dobrý krok kupředu, ale i přesto vám můžou chybět nějaké maličkosti, které jste u původní věci brali jako samozřejmost.

Do takové situace jsme se už před nějakou dobou s vývojem v Heurece dostali. Nastoupil nám nový šéf, který rozhýbal nové věci. Třeba změna správce git repozitářů ze stávajícího Stashe (nyní Bitbucket server) na Gitlab.

stash-to-gitlab

Asi nemá cenu zabývat se do podrobna důvody ke změně. Stačí říci, že tam figurovaly buzzwordy jako microservices, docker, k8s, pipelines atd. A všechny tyhle věci Gitlab podporoval. S tím logicky přišla taky daleko větší komplexita než u nástroje typu Stash, který toho moc neuměl. Ale co uměl, uměl dobře.

To se o Gitlabu v té době říct úplně nedalo. Nabídl toho hodně, ale v některých případech ne tak dobře, jak si to člověk představoval. Hned od začátku jsme postrádali přehledný stromový výpis změněných souborů v rámci merge requestu. Potom nám chyběl jejich jednoduchý přehled, respektive požadovaných code reviews. Obojí samozřejmě starý dobrý Stash měl. Druhý problém sice Gitlab řešil stránkami: TO-DO list a Merge Requests, ty ale nikdy nefungovaly tak, jak jsme od nich čekali. Jako ticketovací systém ale nepoužíváme přímo Gitlab, ale Jiru. Jestli někdy budete řešit podobný problém, zkuste to hodit pod jeden systém, usnadní to práci.

Takže co s tím?

Myšlenku udělat merge request přímo do Gitlabu jsem zavrhl po průzkumu jeho repozitáře, protože schválení i poměrně jednoduchých změn trvá třeba i rok. To je ale bohužel častá bolístka všech open-source programů.

První problém s přehledem souborů ve stromové struktuře jsme tedy vyřešili jednoduchým doplňkem do prohlížeče, který ze stránky merge requestu přečetl všechny informace o změnách a přehledně je zobrazil jako strom souborů. Předběhli jsme dobu, později tuto funkcionalitu totiž doplnil sám Gitlab.

Druhý problém, chybějící přehled code reviews, byl už větší oříšek. Tyhle informace se už jednoduše nikde na stránce najít nedaly. Naštěstí Gitlab disponuje docela pěkným API, ze kterého se při troše práce dají tyto informace vytáhnout. A tak po pár dnech experimentů a bastlení přibyla do našeho extensionu nová funkce, která přidávala do stránky přehled čekajících code reviews. Funkce sklidila úspěch a začali ji používat i kolegové.

extension preview

Verze dvě na scéně

Doplněk byl ze začátku jen interní záležitost, protože obsahoval i nějaké interní pomůcky pro vývojová prostředí, a jeho kód, no řekněme si to na rovinu, nebyl zrovna reprezentativní.

Co se ale nestalo? O doplňku se dozvěděli kamarádi z jiných firem a přišel dotaz, jestli bych ho nechtěl dát veřejně, že by ho také využili. A to byl impuls pro druhou a značně vylepšenou verzi.

Kód jsem přepsal do hezčí podoby, přidal jsem cachování dat, aby je nebylo potřeba při každém načtení stránky znovu stahovat (v našem případě cca 300 requestů). Podpora se rozšířila z Chromu i na Firefox. Přibyly různé fixtures pro Gitlab - lepší zobrazení proměnných pro pipeliny, zobrazení počtu commitů v merge buttonu a automatické zaškrtnutí mazání větví po mergi.

Gitlab dokonce přidal možnost omezit přístup k API jen pro čtení, čímž odpadl problém s poskytnutím plného přístupu k API, který pochopitelně dokázal od použití rozšíření odradit leckoho.
Nakonec jsem kód přestěhoval do veřejného githubího repositáře, kde je dostupný k nahlédnutí či případnému vybuildění vlastního doplňku.

I přesto, že se ještě do nedávna jednalo v podstatě o interní záležitost, obě rozšíření si našla cestu i za hranice ČR. Mezi zeměmi se objevila například i Čína, i když pouze na chvíli, asi nějaký virus.

statistics

Vyzkoušejte sami!

Jestli řešíte něco podobného, rozšíření si stáhnete v katalozích každého z podporovaných prohlížečů. Což je aktuálně Chrome a Firefox.

Rozšíření ovšem bude fungovat i v ostatních prohlížečích, které podporují Chrome Extension API, takže například v Chromiu, Opeře nebo Vivaldi.

A co chybí v Gitlabu vám? Udělejte nám pull request na Githubu nebo otevřete issue.

<hr>

Nejsme asociálové

Twitter

Na Twitteru můžeš sledovat, na čem děláme


GitHub

Na GitHubu můžeš sledovat, jak to děláme
Follow us on GitHub

Instagram

A na Instagramu, že se u toho i skvěle bavíme
Follow us on Instagram

YouTube

Na život se musí chytře ;)
Follow us on YouTube
<hr>