Skip to content

Dataplattform: CI CD Pipeline

Leevi978 edited this page Sep 29, 2022 · 2 revisions

Hvorfor trenger vi en CI/CD pipeline?

Kort fortalt er en CI/CD pipeline en prosess som automatiserer oppgaver som testing og deployment, slik at utviklere kun skal trenge å forholde seg til selve utviklingsarbeidet. Hensikten er ikke bare å spare utviklerne for arbeid, men også skape trygghet i arbeidsprosessen.

Ved manuell deployment er det ingen ting som forhindrer menneskelige feil, og det er fort gjort å produksjonssette utestet kode. En automatisk prosess for deployment kan sørge for at kode kun deployes dersom alle tester er kjørt.

Uten en automatisk prosess for testing må utviklere selv huske på å kjøre tester lokalt på sin egen maskin før deployment. Dette er ikke bare tidkrevende, men også lite trygt da det er fort gjort å glemme eller hoppe over. I tillegg har enhver utvikler forskjellig kjøremiljø på sin egen maskin, som gjør at tester kan gi forskjellig resultat avhengig av hvem som kjører den. En automatisk testprosess kan sørge for at all kode blir testet, og at testene alltid blir kjørt med samme kjøremiljø.

Modell og implementasjon

CI/CD flyten til Dataplattform er implementert ved bruk av Github Actions som konfigureres til å kjøre automatisk ved Github events som pull-requests og merge. Så denne måten kan testing og deployment skje automatisk i skyen når nye endringer legges inn.

Tjenester kan testes på fire forskjellige måter:

  1. Lint
  2. Unit test
  3. Ende-til-ende (E2E) testing
  4. Manuelle tester

Når vi automatiserer disse testene følger vi "test-pyramiden", hvor tester med lav kostnad kjøres først og ofte, mens tester med høyere kostnad kjøres sjeldnere, og kun dersom de billige testene ikke feiler.

Test pyramid

Flyten er implementert på følgende måte:

  • Alle pull-requests til main gjennomgår Lint og Unit test. For at merge skal være mulig må ingen av disse testene feile.
  • Alle endringer som merges inn i main blir deployet til utviklingsmiljøet i AWS.
  • E2E tester utføres manuelt i Dev miljøet. Dersom alt virker som det skal, opprettes en ny release.
  • Når en ny release opprettes deployes endringene til Prod-miljøet i AWS.

CDCD pipeline

Clone this wiki locally