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.
| Fra | Til | Mængde (pipeline-kørsler) |
|---|---|---|
| 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 |
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ø,4Sådan fungerer det
Eksportér pipeline-kørsler for én periode
Medtag triggeren, det første fejlende trin og resultatet. Behold genkørsler som separate kørsler.
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.
Tæl trigger til resultat til årsag
Tæl hver kørsel én gang efter dens første fejlende trin.
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.