Concurrent release pipelines in Team Foundation Server
VSTS | TFS 2018 | TFS 2017
This article describes the licensing model for Release Management in Team Foundation Server 2017 (TFS 2017) or later. We don't charge you for Team Foundation Build (TFBuild) so long as you have a TFS Client Access License (CAL).
A TFS concurrent pipeline gives you the ability to run a single release at a time in a team project collection. You can keep hundreds or even thousands of release definitions in your collection. But, to run more than one release at a time, you need additional concurrent pipelines.
One free concurrent pipeline is included with every collection in a Team Foundation server. Every Visual Studio Enterprise subscriber in a Team Foundation server contributes one additional concurrent pipeline. You can buy additional private pipelines from the Visual Studio Marketplace.
Do I need concurrent pipelines in TFS 2015 or TFS 2013? Short answer: no. More details
How a concurrent pipeline is consumed
For example, a collection in a Team Foundation server has one concurrent pipeline. This allows users in that collection to run only one release at a time. When additional releases are triggered, they are queued and will wait for the previous one to complete.
A release requires a concurrent pipeline only when it is being actively deployed to an environment. Waiting for an approval does not consume a concurrent pipeline. However, waiting for a manual intervention in the middle of a deployment does consume a concurrent pipeline.
- FabrikamFiber Release 10 is first to be deployed.
- Deployment of FabrikamFiber Release 11 starts after Release 10's deployment is complete.
- Release 12 is queued until Release 11's deployment is active.
- Release 11 waits for an approval. Release 12's deployment starts because a release waiting for approvals does not consume a concurrent pipeline.
- Even though Release 11 is approved, it resumes only after Release 12's deployment is completed.
- Release 11 is waiting for manual intervention. Release 13 cannot start because the manual intervention state consumes a concurrent pipeline.
Manual intervention does not consume a pipeline in TFS 2017.1 and newer.
Concurrent processing within a single release
Concurrent processing within a single release does not require additional concurrent pipelines. So long as you have enough agents, you can deploy to multiple environments in a release at the same time.
For example, suppose your collection has three concurrent pipelines. You can have more than three agents running at the same time to perform parallel operations within releases. For instance, notice below that four or five agents are actively running jobs from three concurrent pipelines.
Concurrent pipelines in an organization
For example, here's an organization that has multiple Team Foundation Servers. Two of their users have Visual Studio Enterprise subscriptions that they can use at the same time across all their on-premises servers and in each collection so long as the customer adds them as users to both the servers as explained below.
Determine how many concurrent pipelines you need
You can begin by seeing if your teams can get by with the concurrent pipelines you've got by default. As the number of queued releases exceeds the number of concurrent pipelines you have, your release queues will grow longer. When you find the queue delays are too long, you can purchase additional concurrent pipelines as needed.
A simple rule of thumb: Estimate that you'll need one concurrent pipeline for every 10 users in your server.
In the following scenarios you might need multiple concurrent pipelines:
If you have multiple teams, if each of them require a CI build, and if each of the CI builds is configured to trigger a release, then you'll likely need a concurrent pipeline for each team.
If you develop multiple applications in one collection, then you'll likely need additional concurrent pipelines: one to deploy each application at the same time.
Use your Visual Studio Enterprise subscription benefit
Users who have Visual Studio Enterprise subscriptions are assigned to VS Enterprise access level in the Users hub of TFS instance. Each of these users contributes one additional concurrent pipeline to each collection. You can use this benefit on all Team Foundation Servers in your organization.
Browse to Server settings, Access levels.
On the left side of the page, click VS Enterprise.
Add your users who have Visual Studio Enterprise subscriptions.
After you've added these users, additional licenses will appear on the resource limits page described below.
Purchase additional concurrent pipelines
If you need to run more concurrent releases, you can buy additional private pipelines from the Visual Studio marketplace. Since there is no way to directly purchase concurrent pipelines from Marketplace for a TFS instance at present, you must first buy concurrent pipelines for a VSTS account. After you buy the private pipelines for a VSTS account, you enter the number of purchased concurrent pipelines manually on the resource limits page described below.
View and manage concurrent pipelines
Browse to Collection settings, Build and Release, Resource limits.
View or edit the number of purchased concurrent pipelines.
Who can use the system?
TFS users with a TFS CAL can author as many releases as they want.
To approve releases, a TFS CAL is not necessary; any user with stakeholder access can approve or reject releases.
Do I need concurrent pipelines to run builds on TFS?
No, on TFS you don't need concurrent pipelines to run builds. You can run as many builds as you want at the same time for no additional charge.
Do I need concurrent pipelines to use release management in versions before TFS 2017?
In TFS 2015, so long as your users have a TFS CAL, they can use release management for no additional charge in trial mode. We called it "trial mode" to indicate that we would eventually charge for release management. Despite this label, we fully support release management in TFS 2015.
In TFS 2013 there is no change in the licensing of release management features.