Create and manage agent pools

TFS 2017 | TFS 2015

Note

In Microsoft Team Foundation Server (TFS) 2018 and previous versions, build and release pipelines are called definitions, runs are called builds, service connections are called service endpoints, stages are called environments, and jobs are called phases.

An agent pool is a collection of agents. Instead of managing each agent individually, you organize agents into agent pools. In TFS, pools are scoped to the entire server; so you can share an agent pool across project collections and projects.

An agent queue provides access to an agent pool within a project. When you create a build or release pipeline, you specify which queue it uses. Queues are scoped to your project in TFS 2017 and newer, so you can only use them across build and release pipelines within a project.

To share an agent pool with multiple projects, in each of those projects, you create an agent queue pointing to the same agent pool. While multiple queues across projects can use the same agent pool, multiple queues within a project cannot use the same agent pool. Also, each agent queue can use only one agent pool.

Agent pools are scoped to project collections.

TFS 2015 build system architecture

You create and manage agent pools from the agent pools tab in admin settings.

  1. Navigate to your project and choose Manage project (gear icon).

    Manage project, 2015.

  2. Choose Control panel.

    Choose Control panel, 2015.

  3. Select Agent pools.

    Select Agent pools, 2015.

You create and manage agent queues from the agent queues tab in project settings.

  1. Navigate to your project and choose Manage project (gear icon).

    Navigate to your project and choose Manage project, TFS 2015.

  2. Choose Control panel.

    Choose Control panel in TFS 2015.

  3. Select the desired project collection, and choose View the collection administration page.

    Project collection administration, TFS 2015.

    1. Select Agent Queues (For TFS 2015, Select Build and then Queues).

      Select Build, and then Queues.

Default agent pools

The following agent pools are provided by default:

Designate a pool in your pipeline

To choose a pool and agent in the classic editor, navigate to the pipeline settings, select the desired Agent pool, and then the desired image from the Agent Specification drop-down.

Select Agent pool and choose the desired agent

Manage pools and queues

You create and manage agent pools from the agent pools tab in admin settings.

  1. Navigate to your project and choose Manage project (gear icon).

    Manage project, 2015.

  2. Choose Control panel.

    Choose Control panel, 2015.

  3. Select Agent pools.

    Select Agent pools, 2015.

You create and manage agent queues from the agent queues tab in project settings.

  1. Navigate to your project and choose Manage project (gear icon).

    Navigate to your project and choose Manage project, TFS 2015.

  2. Choose Control panel.

    Choose Control panel in TFS 2015.

  3. Select the desired project collection, and choose View the collection administration page.

    Project collection administration, TFS 2015.

    1. Select Agent Queues (For TFS 2015, Select Build and then Queues).

      Select Build, and then Queues.

Pools are used to run jobs. Learn about specifying pools for jobs.

If you've got a lot of self-hosted agents intended for different teams or purposes, you might want to create additional pools as explained below.

Create agent pools

Here are some typical situations when you might want to create self-hosted agent pools:

  • You're a member of a project and you want to use a set of machines owned by your team for running build and deployment jobs. First, make sure you're a member of a group in All Pools with the Administrator role. Next create a New project agent pool in your project settings and select the option to Create a new organization agent pool. As a result, both an organization and project-level agent pool will be created. Finally install and configure agents to be part of that agent pool.

  • You're a member of the infrastructure team and would like to set up a pool of agents for use in all projects. First make sure you're a member of a group in All Pools with the Administrator role. Next create a New organization agent pool in your admin settings and select the option to Auto-provision corresponding project agent pools in all projects while creating the pool. This setting ensures all projects have a pool pointing to the organization agent pool. The system creates a pool for existing projects, and in the future it will do so whenever a new project is created. Finally install and configure agents to be part of that agent pool.

  • You want to share a set of agent machines with multiple projects, but not all of them. First create a project agent pool in one of the projects and select the option to Create a new organization agent pool while creating that pool. Next, go to each of the other projects, and create a pool in each of them while selecting the option to Use an existing organization agent pool. Finally, install and configure agents to be part of the shared agent pool.

Security of agent pools

Understanding how security works for agent pools helps you control sharing and use of agents.

The All agent pools node in the Agent pools tab is used to control the security of all project agent pools in a project. Role memberships for individual project agent pools are automatically inherited from those of the 'All agent pools' node. By default, the following groups are added to the Administrator role of 'All agent pools': Build Administrators, Release Administrators, Project Administrators.

TFS 2015

In TFS 2015, special groups are defined on agent pools, and membership in these groups governs what operations you can perform.

Members of Agent Pool Administrators can register new agents in the pool and add additional users as administrators or service accounts.

Add people to the Agent Pool Administrators group to grant them permission manage all the agent pools. This enables people to create new pools and modify all existing pools. Members of Team Foundation Administrators group can also perform all these operations.

Users in the Agent Pool Service Accounts group have permission to listen to the message queue for the specific pool to receive work. In most cases you should not have to manage members of this group. The agent registration process takes care of it for you. The service account you specify for the agent (commonly Network Service) is automatically added when you register the agent.

FAQ

If I don't schedule a maintenance window, when will the agents run maintenance?

If no window is scheduled, then the agents in that pool will not run the maintenance job.

What is a maintenance job?

You can configure agent pools to periodically clean up stale working directories and repositories. This should reduce the potential for the agents to run out of disk space. Maintenance jobs are configured at the project collection or organization level in agent pool settings.

To configure maintenance job settings:

  1. Navigate to your project and choose Manage project (gear icon).

    Manage project, 2015.

  2. Choose Control panel.

    Choose Control panel, 2015.

  3. Select Agent pools.

    Select Agent pools, 2015.

Choose the desired pool and choose Settings to configure maintenance job settings for that agent pool.

Important

You must have the Manage build queues permission to configure maintenance job settings. If you don't see the Settings tab or the Maintenance History tab, you don't have that permission, which is granted by default to the Administrator role. For more information, see Security of agent pools.

Maintenance job settings for TFS

Configure your desired settings and choose Save.

Select Maintenance History to see the maintenance job history for the current agent pool. You can download and review logs to see the cleaning steps and actions taken.

The maintenance is done per agent pool, not per machine; so if you have multiple agent pools on a single machine, you may still run into disk space issues.

The maintenance job of my self-hosted agent pool looks stuck. Why?

Typically, a maintenance job gets "stuck" when it's waiting to run on an agent that is no longer in the agent pool. This happens when, for example, the agent has been purposefully taken offline or when there are issues communicating with it.

Maintenance jobs that have been queued to run will wait seven days to run. Afterward, they'll be automatically canceled if not run. The limit is hardcoded in the system and cannot be changed.

The seven-day limit is different from the maintenance job timeout setting. The latter controls the maximum number of minutes an agent can spend doing maintenance. The timer starts when the job starts, not when the job is queued on an agent.

I'm trying to create a project agent pool that uses an existing organization agent pool, but the controls are grayed out. Why?

On the 'Create a project agent pool' dialog box, you can't use an existing organization agent pool if it is already referenced by another project agent pool. Each organization agent pool can be referenced by only one project agent pool within a given project collection.