Sankey-diagram over CI-pipeline-udfald: fra trigger til fejlårsag

Følg pipeline-kørsler fra trigger til resultat og årsagen til hver fejl: ustabile tests, ægte regressioner, konfiguration og miljø. Erstat eksempeltallene med din CI-historik.

Et Sankey-diagram over CI-pipelines viser, hvordan builds ender efter trigger, og hvorfor de fejler. Det adskiller fejl, der betyder noget (en regression), fra dem, der ikke gør (en ustabil test).

Eksemplet har 900 pipeline-kørsler fra tre triggere: pushes til main, pull requests og natlige builds. 760 består alle trin, og 140 fejler ved build (37), tests (96) eller deploy (7). Den sidste kolonne giver årsagen: ustabil test, ægte regression, kodefejl, afhængighed eller konfiguration og testmiljø.

Bestå-raten skjuler blandingen. I eksemplet er 35 af de 96 testfejl ustabile, hvilket er et tillidsproblem for testsuiten, og 45 er ægte regressioner, hvilket er pipelinen, der virker. Antallene er kørsler, ikke commits, så et genforsøg er en kørsel. Se /da/sankey/pull-request-review-flow for reviewtrinnet før og /da/guides/find-flaskehalse-i-en-software-release-proces for den bredere proces.

Sådan læser du dette diagram

  • 760 af 900 kørsler (84 %) består alle trin; 140 (16 %) fejler.
  • Tests er det mest almindelige fejlpunkt: 96 af 140 fejl (69 %).
  • 35 fejl er ustabile tests, 25 % af alle fejl, og 45 er ægte regressioner.
  • Pull request-kørsler består 82 % af gangene (410 af 500), main 90 % (270 af 300).

Data bag diagrammet

Opdigtede tal til illustration. Ikke data om nogen rigtig virksomhed, noget team eller system.

Sankey-diagram over CI-pipeline-udfald: fra trigger til fejlårsag (pipeline-kørsler)
FraTilMængde (pipeline-kørsler)
Push til mainBestod alle trin270
Push til mainFejlede ved build8
Push til mainFejlede ved tests17
Push til mainFejlede ved deploy5
Pull requestBestod alle trin410
Pull requestFejlede ved build25
Pull requestFejlede ved tests65
NatligBestod alle trin80
NatligFejlede ved build4
NatligFejlede ved tests14
NatligFejlede ved deploy2
Fejlede ved buildKodefejl15
Fejlede ved buildAfhængighed eller konfiguration22
Fejlede ved testsUstabil test35
Fejlede ved testsÆgte regression45
Fejlede ved testsMiljø16
Fejlede ved deployAfhængighed eller konfiguration3
Fejlede ved deployMiljø4

De samme data som CSV

source,target,value
Push til main,Bestod alle trin,270
Push til main,Fejlede ved build,8
Push til main,Fejlede ved tests,17
Push til main,Fejlede ved deploy,5
Pull request,Bestod alle trin,410
Pull request,Fejlede ved build,25
Pull request,Fejlede ved tests,65
Natlig,Bestod alle trin,80
Natlig,Fejlede ved build,4
Natlig,Fejlede ved tests,14
Natlig,Fejlede ved deploy,2
Fejlede ved build,Kodefejl,15
Fejlede ved build,Afhængighed eller konfiguration,22
Fejlede ved tests,Ustabil test,35
Fejlede ved tests,Ægte regression,45
Fejlede ved tests,Miljø,16
Fejlede ved deploy,Afhængighed eller konfiguration,3
Fejlede ved deploy,Miljø,4

Sådan fungerer det

  1. Eksportér pipeline-kørsler for én periode

    Medtag triggeren, det første fejlende trin og resultatet. Behold genkørsler som separate kørsler.

  2. Giv hver fejl en årsag

    Brug en kort liste: ustabil, regression, kodefejl, konfiguration, miljø. En fejl uden årsag går til Ukendt, hvilket er værd at vise.

  3. Tæl trigger til resultat til årsag

    Tæl hver kørsel én gang efter dens første fejlende trin.

  4. Kontrollér balancen

    Hvert fejlende trin skal afgive lige så mange kørsler, som det modtager. Bestået ender i anden kolonne.

Ofte stillede spørgsmål

Hvordan skelner jeg en ustabil test fra en regression?

En almindelig regel er, at en test, der fejler og derefter består ved genforsøg uden kodeændring, er ustabil. Brug den regel, dit team allerede har, og hold den ens hver periode.

Hvorfor tælle kørsler og ikke commits?

Kørsler er det, CI-systemet registrerer. Hvis du vil have commits, så tæl hver commit én gang efter dens endelige resultat, og skriv det i datanoten.

Redigér dette Sankey-diagram over CI-pipelines

Åbn eksemplet som dit eget diagram, og indtast dine pipeline-antal.

Redigér dette Sankey-diagram over CI-pipelines

Mere i Sankey-diagrammer