Azure Pipelines
A reference of YAML patterns and snippets for Azure DevOps pipeline configuration. Copy what you need; each snippet stands on its own.
Quick navigation
| Pattern | Section |
|---|---|
| Conditional template selection | Conditional templates |
| Multi-repository builds | Multi-repository builds |
| Pipeline design principles | Design principles |
Design principles
- Keep it simple
- Use variables and parameters
- Define repositories explicitly (needed for mixed
dev.azure.comtenant subscriptions) - Minimise nested template YAML — every level of nesting is another context switch when you’re debugging
Conditional templates
Use parameters and $ expressions to pick a template at compile time. Here the pipeline swaps between an experimental and a stable build based on a boolean parameter.
1
2
3
4
5
6
7
8
9
10
11
12
#azure-pipeline.yml
parameters:
- name: experimentalTemplate
displayName: 'Use experimental build process?'
type: boolean
default: false
steps:
- ${{ if eq(parameters.experimentalTemplate, true) }}:
- template: experimental.yml
- ${{ if not(eq(parameters.experimentalTemplate, true)) }}:
- template: stable.yml
Multi-repository builds
A pipeline can pull templates and code from more than one repository. The first run prompts you to grant permission to each external repository resource before it’ll check them out — expect that gate the first time, it’s not an error.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
resources:
repositories:
- repository: DeploymentTemplates #alias name
type: git #type of repository
name: deployment-files #repository name
ref: 'refs/heads/main' #git branch reference
stages:
- stage: 'CIBuild'
displayName: 'CI Service'
jobs:
- job: CI_Service
displayName: CI Service
continueOnError: false
pool:
displayName: "CI Service"
name: Default
workspace:
clean: all
timeoutInMinutes: 120
cancelTimeoutInMinutes: 2
steps:
- template: DevOps/Tasks/_DotNetCoreCLI.yml@DeploymentTemplates
parameters:
displayName: 'Restore .NetCore Projects'
projects: '**/MicroServices/**/*.API.csproj'
arguments: '--packages $(Build.SourcesDirectory)\packages'
command: restore
- template: DevOps/Tasks/_DotNetCoreCLI.yml@DeploymentTemplates
parameters:
displayName: 'Build .NetCore Projects'
projects: '**/*.csproj'
arguments: '--configuration $(BuildConfiguration) --output $(Build.SourcesDirectory)\bin\$(BuildConfiguration)'
command: build
References
This post is licensed under
CC BY 4.0
by the author.