Hoppa till innehåll

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

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:

  1. Hämta koden.
  2. Installera rätt version av verktygen.
  3. Installera beroendena.
  4. Sök efter kända säkerhetsbrister i beroendena.
  5. Typkontroll och enhetstester.
  6. Bygg webbplatsen.
  7. Kontrollera säkerhetsinställningar och länkar.
  8. 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.

Relaterade begrepp