Pipeline
En följd av automatiska steg som körs i bestämd ordning, till exempel hämta koden, bygga, testa och publicera.
- Kallas även
- arbetsflöde, workflow
- Kategori
- Utvecklingsflöde
Pipeline, arbetsflöde, workflow, pipelines, CI-pipeline
Enkel förklaring
En pipeline är som ett löpande band. Varje ändring passerar ett antal stationer i tur och ordning: koden hämtas, programmet byggs, testerna körs och kanske publiceras resultatet. Om en station hittar ett fel stannar bandet, och resten av stegen körs inte.
Ordet betyder egentligen rörledning. I Forgejo och GitHub kallas samma sak workflow, arbetsflöde.
Teknisk förklaring
En pipeline beskrivs i en textfil i repot, oftast i formatet YAML. I Forgejo ligger filerna i katalogen
.forgejo/workflows/. Filen anger:
- när pipelinen ska köras, till exempel vid varje pull request
- jobb, som kan köras efter varandra eller samtidigt
- steg i varje jobb: kommandon som ska köras
Ett steg som misslyckas stoppar jobbet. Jobben körs av en runner, och resultatet rapporteras tillbaka till tjänsten.
Praktiskt exempel
Förenklat ser stegen i Kodkollektivet Academys pipeline ut så här:
- Hämta koden.
- Installera rätt version av verktygen.
- Installera beroendena.
- Sök efter kända säkerhetsbrister i beroendena.
- Typkontroll och enhetstester.
- Bygg webbplatsen.
- Kontrollera säkerhetsinställningar och länkar.
- Testa i webbläsare.
Misslyckas steg 5 körs varken bygget eller webbläsartesterna.
När och varför används det?
Pipelines används för allt som ska göras likadant varje gång: tester vid varje ändring (CI), publicering (continuous delivery eller continuous deployment) eller regelbundna kontroller.
Eftersom stegen står i en fil i repot granskas och versionshanteras de precis som resten av koden.
Rekommendation: lägg de snabbaste kontrollerna först. Då får man besked om enkla fel innan de långsamma testerna körs.
Vanliga missförstånd
- “En pipeline är ett program som man installerar.” Nej. Det är en beskrivning av steg. Programmet som kör stegen är runnern.
- “Pipeline och CI är samma sak.” CI är arbetssättet att kontrollera varje ändring. Pipelinen är ett sätt att genomföra det, och kan även användas till annat.
- “Stegen körs på min dator.” Normalt körs de på en runner, alltså en annan dator.