- Azure
- Azure DevOps
- Xamarin
When running your pipeline on Azure DevOps Server for your projects you sometimes need to target a specific agent without changing the configuration of your demands
.
This can be useful in these cases:
When you use Azure DevOps Server you are responsible of managing your pool of agents.
In this tutorial we will discover how to define your default demands
to target all the agents compatibles and in the same time, be able to select a specific agent if needed.
A pipeline has a structure like this:
pipeline
| --- stage 1
| --- job 1
| --- task 1
...
| --- task X
...
| --- job Y
...
| --- stage Z
Each pipeline can have multiple stages
which can contains multiple jobs
and each jobs has his own steps represented by the tasks
.
For instance, a stage
can have the responsability to contain all build jobs
for your project, and each job
will build your application for a specific environment (dev, staging, prod…). A task
is a simple command that execute a script.
The demands
allow Azure DevOps to select the correct agent for you. You can define them using the demands
keyword.
Down below we ask for an agent with the a version of XCode set to 13.0:
demands:
- XCODE_VERSION -equals 13.0
The XCODE_VERSION
is called a capacity. This is manually defined in your agent. With this demand, your pipeline will run only with an agent running this version of Xcode.
Now we know how to select an agent using the demands
, let’s add the ability to choose it by his name:
parameters:
agentName: 'Any'
stages:
- stage: Build
pool:
name: Default # The name of your agent pool
${{ if eq(parameters.agentName, 'Any') }}:
demands:
- XCODE_VERSION -equals 13.0
# Other demands here
${{ if ne(parameters.agentName, 'Any') }}:
demands:
- Agent.Name -equals ${{ parameters.agentName }}
jobs:
- job:
steps:
# All steps for your job here..
As you can see above we define the agentName
to a default value: Any
. When you will run your pipeline if you don’t change this value it will automatically run it using the demands you specified, here the Xcode version.
However, if you want to run your pipeline on a specific agent, you just have to enter the name of this agent before starting the pipeline.
It’s now easy to switch between different agents and configurations on your Azure DevOps Server pipelines. From my experience, this functionality will save you a lot of time in your projects!
Happy coding!