Пипелине као код објашњен на најједноставнији могући начин

U svetu razvoja softvera, CI/CD, ili kontinuirana integracija i kontinuirana isporuka, predstavljaju automatizovane procese koji olakšavaju izgradnju i primenu vašeg koda u različitim okruženjima. Ovi procesi su ključni za efikasno upravljanje životnim ciklusom softvera.

Međutim, sam proces stvaranja i održavanja takvog sistema može postati kompleksan i zahtevan. Tu na scenu stupa koncept „cevovoda kao koda“ (Pipeline as Code). Ovaj pristup podrazumeva kreiranje kompletnog CI/CD sistema u obliku koda. Umesto oslanjanja na korisničke interfejse i alate za premeštanje i ispuštanje elemenata, koristite konfiguracione datoteke. Ove datoteke definišu kako će se vaš kod graditi, testirati i primenjivati.

Pre nego što detaljnije istražimo „cevovod kao kod“ i načine njegovog kreiranja, važno je prvo razumeti šta tačno predstavlja „cevovod“ u kontekstu razvoja softvera.

Šta je „cevovod“ u razvoju softvera?

U kontekstu softvera, „cevovod“ je niz automatizovanih koraka koji uzimaju najnovije izmene vašeg koda. Zatim, taj kod prolazi kroz specifične procese i na kraju se primenjuje u željenom okruženju. Razmotrimo primer da bismo bolje razumeli ovaj koncept.

Pretpostavimo da imate tri mikrousluge i da ste dodali nove funkcionalnosti jednoj od njih. Nakon toga, želite da izvršite testiranje na nivou koda. Kada testovi prođu, želite da proverite formatiranje koda. Zatim je potrebno izgraditi kod. Nakon izgradnje, želite da ga primenite u dva različita okruženja sa više mašina u svakom od njih. Konačno, želite da izvršite integracione testove da biste bili sigurni da su vaše izmene kompatibilne sa ostalim uslugama.

Sve ove korake možete obavljati ručno. Međutim, to će oduzeti mnogo vremena i biti podložno greškama. Postoji li način da se ovi koraci automatizuju? Odgovor je da! Možete kreirati „cevovod“ i definisati sve neophodne korake. Kada je „cevovod“ definisan, svaki put kada unesete izmene u kod, možete pokrenuti „cevovod“ i ne morate brinuti o ručnim koracima.

Prednosti pristupa „cevovod kao kod“

Korišćenje alata sa interfejsima „prevuci i pusti“ može otežati praćenje promena, održavanje standardizacije i promovisanje saradnje. „Cevovod kao kod“ je napredniji pristup definisanju procesa razvoja softvera. Omogućava doslednost, ponovljivost, a takođe olakšava saradnju među članovima tima.

Ovaj pristup pomaže u postizanju konzistentnosti. Kroz automatizaciju se postiže ponovljivost procesa i isti „cevovod“ se može koristiti za različite sisteme. Sam kod, koji se koristi za definisanje „cevovoda“, doprinosi saradnji.

#1. Doslednost

Definisanje procesa u tekstualnom formatu osigurava da se sve odvija prema planiranom redosledu. Korišćenjem standardnog toka rada za sve procese izgradnje i primene aplikacija postiže se doslednost i smanjuje se mogućnost pojave neočekivanih problema.

Uz doslednost, postiže se i bolja usklađenost i sigurnost. Dosledan „cevovod“ omogućava definisanje sigurnosnih provera i provera ranjivosti, kako ništa ne bi prošlo neopaženo.

#2. Ponovljivost

Kreiranjem „cevovoda“ i postavljanjem automatizacije, pored doslednosti, osiguravate da svaki kod aplikacije prolazi kroz identične faze i provere.

Kod će svaki put prolaziti kroz isti proces izgradnje i primene. Tako se održava ponovljivost u svakom pokretanju procesa.

#3. Saradnja

Pošto je kod osnova za kreiranje „cevovoda“, ovaj pristup promoviše saradnju. Članovi tima mogu doprinositi istom kodu, baš kao što rade sa kodom aplikacije. „Cevovod kao kod“ takođe omogućava kontrolu verzija i pregled koda, osiguravajući najbolje prakse i pravovremeno otkrivanje problema.

Sada, pogledajmo kako možete kreirati sopstveni „cevovod“ koristeći pristup „cevovod kao kod“.

„Cevovod kao kod“ u Dženkinsu

Kada je reč o sistemima kontinuirane integracije i kontinuirane implementacije (CI/CD), Dženkins se ističe kao vodeći server za automatizaciju otvorenog koda. Sa Dženkinsom možete jednostavno integrisati izmene u kodu, automatizovati testiranje i izgradnju, te primenjivati softver na pouzdan i efikasan način.

Bez obzira da li ste hobista koji uči o automatizovanim procesima ili gradite kompleksne sisteme za preduzeća, Dženkins zadovoljava sve jedinstvene zahteve vašeg projekta. Njegova bogata ponuda dodataka i rastuća zajednica vam omogućavaju da maksimalno iskoristite mogućnosti automatizacije.

U Dženkinsu, „cevovod“ predstavlja skup različitih dodataka definisanih specifičnim redosledom, koji čine vaš CI/CD sistem. Bez obzira na složenost, možete kreirati sopstveni „cevovod“ pomoću koda, koristeći DSL (Domain Specific Language) sintaksu specifičnu za „cevovod“. DSL je izgrađen na vrhu Apache Groovy.

Osnova „cevovoda kao koda“ u Dženkinsu je Jenkinsfile – tekstualna datoteka koja sadrži kod koji opisuje sve faze i radnje u procesu. Naučimo kako da kreiramo sopstveni „cevovod kao kod“ koristeći Jenkinsfile.

Kako kreirati sopstveni „cevovod kao kod“?

Nakon instalacije i pokretanja Dženkinsa, otvorite web interfejs u svom pretraživaču. Možda ćete morati da se prijavite. Nakon toga, dolazite na glavnu kontrolnu tablu. Odatle ćete početi kreiranje svog „cevovoda“.

  • Na levoj strani, pronađite dugme „Nova stavka“.
  • Kliknite na to dugme da biste prešli na sledeću stranicu.
  • Na novoj stranici, dobićete upit za kreiranje nove stavke.
  • Unesite ime u polje „Unesite naziv stavke“. Ovo je obavezno.
  • Imajte na umu da će biti kreiran direktorijum sa istim imenom. Zato je preporučljivo izbegavati razmake, jer mogu dovesti do neželjenih efekata.
  • Zatim odaberite opciju „Cevovod“ i kliknite na dugme „OK“ na dnu ekrana.
  • Prikazaće se prozor za konfiguraciju.
  • Kliknite na opciju „Cevovod“ na levoj strani ili skrolujte nadole do odeljka „Cevovod“.

Počnimo sa jednostavnim „cevovodom“ koji možete konfigurisati direktno iz korisničkog interfejsa.

Kreiranje „cevovoda kao koda“ direktno u Dženkinsu

Kada ste u odeljku „Cevovod“, spremni ste da kreirate svoj prvi „cevovod kao kod“.

Iz padajućeg menija „Definicija“ odaberite opciju „Skripta cevovoda“. Ispod nje ćete pronaći oblast za skriptu, gde možete kodirati svoj „cevovod“. Dženkins održava skriptu koja je ovde kreirana.

Dženkins vam nudi izbor između dva stila kodiranja – deklarativne i skriptovane sintakse. Deklarativna sintaksa je jednostavna za upotrebu i pogodna za jednostavne „cevovode“, dok je skriptovana sintaksa za naprednije korisnike i dizajniranje kompleksnijih tokova.

Koristeći deklarativnu sintaksu, napravite tri jednostavne faze – „Izgradi kod“, „Testiraj kod“ i „Primenji kod“, koristeći sledeći isečak koda:

pipeline {
    agent any

    stages {
        stage('Izgradi kod') {
            steps {
                echo 'Ovo je korak za izgradnju...'
            }
        }
        stage('Testiraj kod') {
            steps {
                echo 'Ovo je korak za testiranje...'
            }
        }
        stage('Primenji kod') {
            steps {
                echo 'Ovaj korak primenjuje kod...'
            }
        }
    }
}

Takođe, možete koristiti skriptovanu sintaksu, kao što je prikazano u nastavku:

node {
    stage('Izgradi kod') {
        echo 'Ovo je korak za izgradnju...'
    }
    stage('Testiraj kod') {
        echo 'Ovo je korak za testiranje...'
    }
    stage('Primenji kod') {
        echo 'Ovaj korak primenjuje kod...'
    }
}

Kliknite na „Sačuvaj“. Sada kliknite na dugme „Izgradi odmah“ na levoj strani. Ovo će pokrenuti „cevovod“ koji ste upravo kreirali.

Kada se vaš „cevovod“ završi, možete ga pregledati u istoriji izgradnje. Ako je ovo vaše prvo pokretanje, kliknite na verziju broj 1. Zatim kliknite na „Izlaz konzole“, koji se nalazi na levoj strani. Videćete tri „echo“ poruke iz vašeg koda „cevovoda“ u svakoj fazi.

Kreiranje „cevovoda kao koda“ korišćenjem eksterne datoteke

Održavanje „cevovoda“ direktno u Dženkinsu postaje izazovno kada on postane kompleksan. U tom slučaju, poželjno je kreirati eksternu datoteku i koristiti je za definisanje „cevovoda“.

Pre nego što kreirate Dženkinsov „cevovod“, potreban vam je eksterni repozitorijum i sistem kontrole verzija. Napravimo Git repozitorijum i postavimo ga na GitHub. Kreiraćete svoj Jenkinsfile i sačuvati ga ovde.

  • Idite na svoj GitHub profil. Ako nemate nalog, možete ga besplatno kreirati.
  • Kreirajte novi repozitorijum. Nazovite ga customJenkins.
  • Na lokalnoj mašini proverite da li imate instaliran Git.
  • Kreirajte direktorijum na lokaciji po vašem izboru.
  • Uđite u direktorijum i otvorite svoj terminal.
  • Inicijalizujte prazan Git repozitorijum koristeći komandu „git init“.
  • Sada kreirajte novu datoteku, koja će biti vaš Jenkinsfile. Nazovimo je customJenkinsfile.
  • Napišite svoj „cevovod kao kod“ u datoteci. Na primer, koristite sledeći kod:
pipeline {
    agent any

    stages {
        stage('Izgradi kod') {
            steps {
                echo 'Ovo je korak za izgradnju definisan u prilagođenoj datoteci...'
            }
        }
        stage('Testiraj kod') {
            steps {
                echo 'Ovo je korak za testiranje definisan u prilagođenoj datoteci...'
            }
        }
        stage('Primenji kod') {
            steps {
                echo 'Ovaj korak definisan u prilagođenoj datoteci primenjuje kod...'
            }
        }
    }
}
  • Dodajte novokreiranu datoteku u Git, koristeći komandu „git add –all“ u vašem terminalu.
  • Snimite datoteku u Git, koristeći komandu „git commit -m „Kreiran prilagođeni jenkinsfile““.
  • Povežite lokalni Git repozitorijum sa udaljenim repozitorijumom, koristeći „git remote add origin [email protected]:<vaše korisničko ime>/customJenkins.git“.
  • Zatim, prenesite datoteku na daljinski (GitHub), koristeći „git push –set-upstream origin master“.

Sada ste kreirali udaljeni repozitorijum na GitHub-u, koji sadrži prilagođeni Jenkinsfile. Konfigurišimo Dženkins da ga koristi.

Konfigurisanje Dženkinsa da koristi Jenkinsfile sa GitHub-a

  • Otvorite Dženkinsovu kontrolnu tablu.
  • Napravite novi „cevovod“ ili kliknite na „Konfiguriši“ na levoj strani, iz postojećeg „cevovoda“.
  • Skrolujte nadole do odeljka „Cevovod“.
  • Iz padajućeg menija „Definicija“, odaberite opciju „Skripta cevovoda iz SCM-a“.
  • Odaberite „Git“ u opciji „SCM“.
  • Unesite link svog GitHub repozitorijuma u „URL repozitorijuma“ u odeljku „Repozitorijum“.
  • Uverite se da je „Specifikator grane“ podešen na „*/master“ u odeljku „Grane za pravljenje“.
  • Skrolujte nadole do „Putanja skripte“. Ovde navedite ime Jenkins datoteke kao „customJenkinsfile“. Kliknite na „Sačuvaj“.

Nakon toga, pokrenite „cevovod“. Dženkins će prvo preuzeti vaš kod sa udaljenog repozitorijuma. Zatim će kreirati „cevovod“ koristeći prilagođeni Jenkinsfile i pokrenuti sve faze.

Sada ste uspešno kreirali sopstveni „cevovod“ za razvoj softvera koristeći „cevovod kao kod“. Pored toga, omogućili ste kontrolu verzija u skripti „cevovoda“. Sve izmene koje unesete u kod „cevovoda“ se prate sa svakim Git snimkom. Sledeći korak je da razmotrimo najbolje prakse.

Najbolje prakse za pisanje efikasnog „cevovoda kao koda“

Pogledajmo neke od najboljih praksi koje treba pratiti prilikom pisanja „cevovoda kao koda“:

  • Održavajte „cevovod“ čistim i izbegavajte pisanje previše složenih uslova.
  • Ako u „cevovodu“ radite previše komandi, podelite ih na različite korake.
  • Koristite eksterne datoteke sa kontrolom verzija za svoje „cevovod kao kod“ skripte.
  • Koristite karakteristike programskog jezika, poput Groovy, da integrišete različite korake.
  • Izbegavajte pozive ka „Jenkins.getInstance“ ili njegovim pristupnicima, da biste smanjili probleme sa sigurnošću i performansama.
  • Nemojte zamenjivati ugrađene komande „cevovoda“, kao što su „sh“ i „timeout“.
  • Kreirajte eksterne alate ili skripte za složene zadatke koji zahtevaju procesorsku snagu i uključite ih u svoj „cevovod“.
  • Iskoristite širok izbor postojećih dodataka dostupnih za Dženkins, kako biste odgovorili na specifične zahteve svog projekta.
  • Uverite se da ste uključili obradu izuzetaka i grešaka, jer stvari mogu poći po zlu.
  • Nemojte čvrsto povezivati svoj „cevovod kao kod“ sa poslovnom logikom.
  • Koristite parametrizovane argumente gde god je to moguće, kako biste učinili svoj „cevovod“ višekratno upotrebljivim.

„Cevovod kao kod“: Jednostavan pristup za složene procese

Ukratko, „cevovod kao kod“ pojednostavljuje automatizaciju CI/CD sistema predstavljajući ceo proces kao kod. Dok CI/CD „cevovodi“ automatizuju izgradnju, testiranje i primenu promena u kodu, „cevovod kao kod“ ide korak dalje, omogućavajući vam da definišete svoj tok rada u tekstu umesto oslanjanja na grafičke interfejse.

Sa „cevovodom kao kod“, osiguravate da se svaki korak u toku rada odvija u ispravnom redosledu i smanjujete rizik od neželjenih problema. Pored toga, postižete doslednost, ponovljivost i bolju saradnju.

Koristeći ovaj vodič, sada znate kako da kreirate sopstvene „cevovode“ koristeći Dženkins, jedan od najčešće korišćenih CI/CD alata. Dženkins nudi moćnu i fleksibilnu platformu za implementaciju „cevovoda kao koda“ kroz svoj Jenkinsfile. Pridržavajte se najboljih praksi i kreirajte tokove rada koji odgovaraju svim vašim potrebama u vezi sa „cevovodima“.

Ako želite da saznate više o Dženkinsu, pogledajte kako da kreirate sopstveni Dženkinsov „cevovod“.