FAKE
FAKE copied to clipboard
Targets defined as parallel run sequentially when they have a common dependency
Hi
I'm trying to make 3 targets run in parallel, with a common first step. As soon as I add the common step, the targets don't seem to run in parallel anymore.
I added a small example script, which I run with dotnet fake run build-parallel.fsx --parallel 8
.
Is this a known issue, or am I missing something here?
#r "paket:
version 7.0.2
framework: net6.0
source https://api.nuget.org/v3/index.json"
open System.Threading
open System.Threading.Tasks
open Fake.Core
open Fake.Core.TargetOperators
Target.create "Default" ignore
Target.create "PreTasks" (fun _ ->
Thread.Sleep(5000)
()
)
Target.create "TaskA1" (fun _ ->
Thread.Sleep(5000)
()
)
Target.create "TaskA2" (fun _ ->
Thread.Sleep(5000)
()
)
Target.create "TaskA3" (fun _ ->
Thread.Sleep(5000)
()
)
// ==> This runs in parallel
"TaskA1"
==> "Default"
"TaskA2"
==> "Default"
"TaskA3"
==> "Default"
//// ==> This runs in parallel as well
//"TaskA1" <=> "TaskA2" <=> "TaskA3"
// ==> "Default"
//// ==> This makes it run sequentially
//"PreTasks"
// ==> "TaskA1"
// ==> "Default"
//
//
//"PreTasks"
// ==> "TaskA2"
// ==> "Default"
//
//"PreTasks"
// ==> "TaskA3"
// ==> "Default"
//
//// ==> This also runs sequentially
//"PreTasks"
// ==> "TaskA1" <=> "TaskA2" <=> "TaskA3"
// ==> "Default"
Target.runOrDefault "Default"