Currently the TFS/VSTS build system has a pretty big bottleneck: tasks run in serial. For build steps that run PowerShell, I’ve implemented runspaces to run processes in parallel (Invoke-Parallel is amazing). However, that only works for one build step. The rest have to wait until it’s finished.
Enter Queue Build(s) Task. This extension sounds pretty simple, right? Queue a build as part of a build…. But it has potential to do much more. It has the ability to use configurations (JSON) to pass variables from the build that’s queuing other builds, including system variables (source branch name, build id, build name, etc.).
In theory, this means you could break down any build into multiple builds to run each in parallel with multiple build agents. This also means you can create a wrapper build that queues a bunch of builds so you don’t have to manually queue them.
Hopefully the VSTS team will eventually implement parallel tasks, but for now this serves as a good workaround.
Update: The VSTS team is planning on adding the ability to run tasks in parallel: https://visualstudio.uservoice.com/forums/330519-team-services/suggestions/13481574-add-ability-to-run-build-steps-in-parallel