I have several projects with this basic build chain. 1. Setup Host. 2. Run Program. 3. Analyze program logs. I need to have these steps separated into different jobs, and each job in a specific build chain needs to run on the same host. Analyze always needs to run immediately after it's run dependency, and Run always needs to run immediately after its setup dependency. I've noticed that if two different projects run at the same time on the same hardware results get ruined. Also each project has several build dependencies.
My current solution is to assign specific agents to each job. But that's not an efficient use of our agents. How can I dynamically assign agents to a job? It would be nice if I could place a lock on an agent at the setup step, and release it on the analyze step.
I noticed that there are build priorities I could test out. But it looks like those can be overridden by the queue algorithm.