Jatkuva integraatio - Continuous Integration (CI)

Kuvauksen kirjoitti: Joona Hautamäki, tunnus K1647

Lyhyt kuvaus käsitteestä tai aiheesta

Ohjelmistokehityksessä lopullista tuotetta kun kehitetään, niin sen ominaisuudet kehitetään yleensä masterin ulkopuolella haarakkaissa eli bracheissä. Ja kun jonkin ominaisuus saadaan tehtyä valmiiksi eli se esimerkiksi läpäisee kaikki testit ja täyttää sille tehdyt vaatimukset, niin se halutaan integroida mukaan masteriin. Tämä kaikki vielä kun automatisoidaan niin saadaan versiohallinta järjestelmään CI-ympäristö. Jatkuva integraatio eli continuous integration (CI) tarkoitus on yhdistää haarakkeissa kehitetyt ominaisuudet ohjelmiston runkoon eli masteriin.

Kun haarakkeesta laitetaan uusin tuotos versiohallintaan, niin se ensin kävisi CI-ketjun läpi versiohallinnan ulkopuolella erillisessä järjestelmässä ennen kuin se liitettäisiin osaksi masteria. CI-ketjussa haarakkeessa tehty koodi ja masterin koodi yhdistettäisiin yhdeksi, sille suoritetaan kaikki testit ja lopuksi vielä se buildattaisiin. Ja jos kaikki onnistuu ilman virheitä niin CI-ketjusta laitetaan uusi yhdistetty versio masterin päälle. Jos CI-ketju epäonnistuu esimerkiksin epäonnistuneiden testien tai ohjelmistoa ei saada buildattua, niin CI-ketju ei laita masteriin mitään ja ilmoittaa versiohallintaan takaisin, että mikä meni pieleen.

CI-ketjuun voidaan myös laittaa testien ja buildaamisen lisäksi paljon muuta. Se voi sisältää koodin laadun analysointia ja niiden tulosten ilmoittaminen takaisin versiohallintaan.

Miksi käyttää CI:tä

CI:n käyttö projekteissa ei ole pakollista, mutta siitä hyötyy suuresti. Se vähentää työtä, kun se on automatisoitu suorittamaan ohjelmiston testit, buildaamisen ja yhdistämisen masteriin. Samalla tämä parantaa projektin laatunvarmistusta, kun pystytään seuraamaan testien suoritumista ja koodin analysoinnin tuloksia versiohallinnassa.

Muuta

Tärkeintä CI-ketjun kannalta, koodissa tulisi olla yksikkötestejä. CI-ketjuun lisäksi voidaan liittää Continuous Delivery eli jatkuva julkaisu. Jonka avulla täysin automaattisen prosessin kautta voi ottaa käyttöön ja vapauttaa minkä tahansa ohjelmiston version mihin tahansa ympäristöön.

Esimerkkejä

Esimerkki kuva CI-ketjusta, joka suorittaa yksikkötestit, koodin analysoinnin ja palauttaa näistä tiedot takaisin versiohallintaan.

GitLab-CI

Lähteitä liittyen aiheeseen

Linkit wikin muihin sivuihin