Yes. There are two ways to do this: tasks and steps. I guess you need stages.
In order for your assemblies to work in parallel, you must have several tasks performed within one stage. If you perform tasks that cannot be performed in parallel and place them in different stages, they will be launched sequentially. For example, if you have:
Test Foo Stage: Init Foo Database Job Hammer Foo Database Job Smash Foo Database Job Test Baz Stage: Init Baz Database Job Bamboozle Baz Database Job Befuddle Baz Database Job
Then, Init / Hammer / Smash at the foo stage will work problematically in parallel. However, you can put each at its own stage:
Test Foo Init Stage: Init Foo Database Job Test Foo Hammer Stage: Hammer Foo Database Job Test Foo Smash Stage: Smash Foo Database Job Test Baz Init Stage: Init Baz Database Job Test Baz Bamboozle Stage: Bamboozle Baz Database Job Test Baz Befuddle Stage: Befuddle Baz Database Job
Then each task will be performed sequentially, and not in parallel. Of course, this effectively limits you to one useful agent.
If you really want to use only one agent, you can always disable everything except one agent, but this will affect all assemblies, so it would not be a good idea if you want something to run in parallel.
And as a last comment, you can also get where you want tasks instead of stages. Combine tasks from each task, and they will be launched in sequential order by one agent. Of course, each task will see the changed files and status from the previous task, so you want to make sure that they will not interfere.
source share