Domain 3: Design and Implement Build and Release Pipelines
Exam Weight: 50–55% ⚠️ HIGHEST PRIORITY DOMAIN
📁 ← Back to Home
📑 Sub-Sections
| # |
Topic |
Key Technologies |
| 3a |
Package Management Strategy |
Azure Artifacts, GitHub Packages, SemVer, CalVer |
| 3b |
Testing Strategy for Pipelines |
Unit, Integration, Load tests, Code Coverage, Quality Gates |
| 3c |
Design and Implement Pipelines |
YAML pipelines, GitHub Actions, Agents, Runners, Triggers |
| 3d |
Design and Implement Deployments |
Blue-green, Canary, Feature Flags, Database tasks |
| 3e |
Infrastructure as Code (IaC) |
Bicep, ARM, DSC, Terraform, Azure Deployment Environments |
| 3f |
Maintain Pipelines |
Health, Optimization, Retention, Classic → YAML migration |
🗺️ Pipeline Architecture Overview
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
| Source Code (GitHub / Azure Repos)
│
▼
┌─────────────────────────────┐
│ CI Pipeline (Build) │
│ ┌────────────────────────┐ │
│ │ Restore dependencies │ │
│ │ Compile / Build │ │
│ │ Unit Tests │ │
│ │ Code Coverage │ │
│ │ Security Scanning │ │
│ │ Publish Artifacts │ │
│ └────────────────────────┘ │
└─────────────┬───────────────┘
│ Artifact
▼
┌─────────────────────────────┐
│ CD Pipeline (Release) │
│ │
│ Dev ──► Test ──► Staging │
│ ↑ │
│ Approval Gate │
│ ↓ │
│ Production │
└─────────────────────────────┘
|
GitHub Actions vs Azure Pipelines
⭐ The exam tests your ability to choose between and integrate these two systems.
| Feature |
GitHub Actions |
Azure Pipelines |
| Config format |
YAML (.github/workflows/) |
YAML or Classic (GUI) |
| Runner/Agent |
GitHub-hosted runners, self-hosted runners |
Microsoft-hosted agents, self-hosted agents |
| Marketplace |
GitHub Marketplace (actions) |
Azure DevOps Marketplace (tasks/extensions) |
| Triggers |
GitHub events (push, PR, schedule, workflow_dispatch) |
Pipeline triggers, branch filters, path filters |
| Environments |
Environments with protection rules |
Environments with approvals and checks |
| Secrets |
Repository/Organization/Environment secrets |
Pipeline variables, Variable groups, Key Vault |
| Reusability |
Reusable workflows, composite actions |
Templates, Task groups, Variable groups |
| Container support |
Container jobs, service containers |
Container jobs, service containers |
| Cost model |
Free minutes for public repos; minutes for private |
Parallel jobs, free tier available |
Integration between the two:
- Use Azure Pipelines trigger from GitHub — connect GitHub repo to Azure Pipelines
- Use GitHub Actions to deploy to Azure — use Azure CLI action, Azure login action
- Share artifacts between systems via Azure Artifacts or GitHub Packages
Key YAML Pipeline Concepts
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
35
36
37
38
39
40
41
| # azure-pipelines.yml — basic structure
trigger:
branches:
include:
- main
- release/*
pool:
vmImage: 'ubuntu-latest'
variables:
buildConfiguration: 'Release'
artifactName: 'drop'
stages:
- stage: Build
jobs:
- job: BuildJob
steps:
- task: UseDotNet@2
inputs:
version: '8.x'
- script: dotnet build --configuration $(buildConfiguration)
displayName: 'Build'
- task: PublishBuildArtifacts@1
inputs:
artifactName: $(artifactName)
- stage: Deploy
dependsOn: Build
condition: succeeded()
jobs:
- deployment: DeployProd
environment: 'production'
strategy:
runOnce:
deploy:
steps:
- script: echo "Deploying..."
|