Diabol / builder

Diabol CD management and visualization Play app
0 stars 0 forks source link

Hur hantera parallella Pipes? #9

Open marcusphi opened 12 years ago

marcusphi commented 12 years ago

Vad händer när en pipe start trigger kommer medan en instans av samma Pipe redan körs för? Vad händer när två olika Pipes vill samtidigt deploya till samma miljö?

Relaterad till issue #3

Det kan ju bero på tillståndet Pipen har kommit till - det kan ju vara så att inget körs, utan att den väntar på manuell input. Men om den är i t.ex. en compile Task i Commit Phasen så kan man ju inte starta ett nytt jobb, inte i samma workspace (eller vad vi nu har för att separera Pipes...) i alla fall.

Vill man köa upp alla triggers? Tänk om man inte kommer ikapp förrän på natten. Då fördröjer man ju feedback.

Måste vi införa ett miljö "Environment" begrepp?

Förslag

En rimlig design är att man har bara max en instans av en Pipe Phase running vid varje tillfälle. Och att tidigare faser prioriteras före senare när man är klar med en Phase och ska välja en ny ur kön.

Det bygger på att man konfigurerar senare faser att vara löst kopplade till tidigare faser genom att alltid gå via ett repository för all interaktion.

Grassman commented 12 years ago

Genom att 'spara' leverabler per version så gör det inget om version 2 exekveras före version 1. Alla tasks kommer hämta de leverabler som sparats för respsktive version. Det är inte implementerat ännu.

Grassman commented 12 years ago

Jag tror att förslaget om en kö är bra för version 1 av PipeIt, då det minskar komplexiteten för hantering av arbetsytor. För version 2.0 kan man tänka att man 'spawnar' arbetsytor per version och därmed får utökad parallellism.