🎲 — mikrobloggeriet olorm - olorm-32 · olorm-33 · olorm-34
Alle kan Github actions, ikke sant? Og YAML, det må da folk ha hørt om.
Nope! Vi utviklere må lære nye ting hver dag. Det er en fantastisk mulighet; hvis vi kontinuerlig lærer nye ting, kan vi bli skikkelig flinke. Det er også en byrde: det finnes så ufattelig mange ting vi må lære oss.
Jeg har nettopp satt opp CICD på Mikrobloggeriet. Her er mine erfaringer.
Først, la oss definere hva vi snakker om.
Når jeg har jobbet med Mikrobloggeriet-koden har jeg fulgt noen prinsipper:
Jeg synes det har fungert bra til nå. Men det har gitt noen utfordringer:
Da er det på tide å sakke ned! Jeg ville da få til følgende:
Hva synes jeg om CICD etter å ha prøvd litt?
Utrolig fint å kunne lene seg på grønne tester i commit-loggen. Det gir meg ro!
Testene kjører dobbelt! Jeg kjører både testene gjennom Github Actions og i selve bygget (i Docker). Det føltes litt rart å velge det, er ikke dette duplisering? Jeg vil kjøre testene i en GH Action fordi da får jeg god tilbakemelding på hva, spesifikt som feiler. Og jeg kjører testene mine i Docker i bygget for å unngå at koden blir prodsatt hvis testene feiler. Jeg kunne kanskje sagt at “prodsetting skal vente på at alle sjekker er ferdig”. Men jeg synes det jeg har funker helt fint, og nå vet jeg i tillegg at alle ganger jeg bygger med Docker lokalt er testene grønne.
Github Actions og YAML er noe man må lære seg! Her er en start:
For å starte med GH actions, legg til én fil:
.github/workflows/test.yml
Her er et minimalt grønt eksempel:
name: Run tests
on: [push, pull_request]
jobs:
Testing:
runs-on: ubuntu-latest
steps:
- run: echo success!
Hvis du legger til denne i repoet ditt, bør du se en liten grønn prikk ved siden av commit-ene dine.
Her er et minmalt rødt eksempel:
name: Run tests
on: [push, pull_request]
jobs:
Testing:
runs-on: ubuntu-latest
steps:
- run: FAIL
Eksempelet feiler fordi FAIL
ikke er en systemkommando.
I stedet for run: FAIL
kunne man kjørt
run: go test
, run: npm test
eller
run: clojure -A:run-tests
. Da skal go test
gi
returkode 0 hvis alt er OK, og noe annet enn 0 hvis testene
feiler.
Min konklusjon så langt er ja. Hvis man ikke har god testdekning og kontroll på hvilke commits som er grønne og røde, blir det utrygt å skrive kode. Og når det er utrygt å endre kode, er det vanskeligere å komme framover på produktet.
CICD er ikke noe vi lærer om på universitetet. Det var i alle fall ikke noe jeg var innom. CICD handler om hvordan vi jobber sammen i praksis.
Jeg vil gjerne høre! Dette er noe jeg tror det er lurt at vi snakker om og deler erfaringer om.
—Teodor