Tovarna
Gradnik za CI/CD: en cevovod in ena namestitev namesto dveh ročno vzdrževanih kopij
· Toolkit · 2 min branja
Reputo in Leadgener, naša produkta v razvoju, smo gradili, testirali in nameščali z dvema kopijama istega cevovoda in istih skriptov za namestitev, ki smo ju prenašali ročno. Do 15. oktobra sta se kopiji razšli. Skripta za namestitev (116 in 111 vrstic) sta se razlikovala v 47 vrsticah, skripta, ki na strežniku zaženeta vsebnike (64 in 82 vrstic), pa v 66. Del razlik so imena produktov in komentarji, del pa delovanje: produkta sta varnostno kopijo delala vsak na svoj način. Popravek v eni kopiji ni prišel do druge, Leadgenerjev prvi cevovod pa je pri kopiranju že izgubil zastavico za gradnjo.
Šest komponent in slika vsebnika ops
Gradnik za CI/CD 1.0.0 smo izdali 15. oktobra 2026. Za gradnjo in namestitev naredi to, kar so paketi NuGet naredili za zaledje in gradnik Keycloak za identiteto: vsebuje šest komponent CI/CD za GitLab (testi zaledja, vstopno preverjanje uporabniškega vmesnika, vzporedni testi uporabniškega vmesnika, gradnja slik, namestitev in obnovitveni test) ter sliko vsebnika ops, v kateri tečeta namestitev in obnovitveni test. Produkt vsako komponento vključi v pripeti različici @delivery-v1.0.0. Različice latest ni, dnevnik sprememb pa vsako spremembo označi glede na to, česa se dotakne: [contract], [behaviour] ali [pipeline].
Različica 1.0 je zvest prenos obeh cevovodov; zasnova navaja vsako spremembo delovanja z razlogom. Varnostna kopija sledi Leadgenerjevi zasnovi: izvoz baze s kontrolnimi vsotami in številom vrstic vsake tabele v bazi aplikacije. Gradnik spremeni eno stvar: vrstice prešteje znotraj istega posnetka stanja, iz katerega nastane izvoz. Produktu ostanejo njegovi vhodni parametri, datoteke Compose in kavlji za korake, ki jih potrebuje samo on, na primer za pripravo realma v Keycloaku.
Dokazano na obeh produktih še isti dan
Pred izdajo je Reputo prevzel gradnik, pripet na določeno potrditev toolkita. Primerjalno poročilo je cevovod pred prevzemom in po njem primerjalo opravilo za opravilom, zahteva za združitev pa pojasni vsako razliko. Število uspešnih testov se ni spremenilo: 2.298 testov zaledja in 2.591 testov uporabniškega vmesnika. Na veji main je namestitev iz gradnika naredila varnostno kopijo obeh baz, prek Reputovega kavlja pripravila Keycloak in prestala preverjanje zdravja, obnovitveni test pa je to kopijo obnovil v začasen vsebnik: 33 tabel, vsaka z enakim številom vrstic kot v varnostni kopiji.
Reputo je nato pripel različico 1.0.0, Leadgener pa je prešel še isti večer. Njegov prvi obnovitveni test na gradniku je preveril 25 tabel, prek lastnega kavlja pa še, da je vseh 3.391 datotek, na katere kaže baza, na mestu in da se njihove kontrolne vsote ujemajo. Iz obeh produktov smo skripte za namestitev odstranili, Reputov .gitlab-ci.yml pa se je skrčil z 290 na 172 vrstic.
Spremembo skupnih opravil, namestitve, varnostne kopije ali obnovitvenega testa zdaj naredimo enkrat, v gradniku; kar potrebuje samo en produkt, ostane v njegovih vhodnih parametrih in kavljih.