tfsazure-devopsazure-pipelines-release-pipelinevnext

TFS vNext Releases - Force Onto Specific Pipeline/Concurrent Job


We're using the new vNext TFS build system (not the old XAML based system) on TFS 2017.2, and we want to implement more pipelines (now called Concurrent Jobs in VSTS 2019 and later - just beware of the terminology switch if you look at new documentation).

We are using the system to build a number of technologies, several of which are WLS based Oracle technologies which are deployed through Maven. WLS can only accept a single deployment at a time - if it encounters concurrent deployment attempts at once there's a significant chance it will hang and stop servicing requests.

We want to force all of these deployments onto a single pipeline/concurrent job so that they are executed sequentially which will avoid the circumstances above. Deployments for other technologies will then be allowed to be deployed on other pipelines (since some of these other deployments can be long running, we want to prevent them from blocking the WLS deployments that are tied to a single pipeline).

We can force builds to deploy on a specific agent via Capabilities and Demands. We could accomplish something similar by forcing all WLS releases onto a single agent (which could operate on multiple Pipelines/Concurrent Jobs but would still force them into a single concurrency model via the agent), but I don't see any way to define Demands on release definitions (I only see the option on build definitions).

Is there a way to force a TFS vNext release definition onto a single Pipeline/Concurrent Job every time it runs (or even a single agent)?


Solution

  • Demands can be specified for a release definition at the phase level within an environment.