Pipelines
Azure DevOps is a great tool to provision the Azure resources. However, it's important to have a solid setup of the pipeline files.
Project setup
Make sure that all the pipelines are saved in a directory NEXT to the project source code, for exmaple:
- 📁 devops, containing al yml pipeline files
- 📁 src, containing the source code of the project
The DevOps folder contains subfolders:
- 📁 pipelines
- 📁 jobs
- 📁 scripts
- 📁 variables
Pipelines
The pipelines folder contains all the different pipelines for:
- 📝 Provisioning
- 📝 Build
- 📝 Test Release
- 📝 Production Release
- 📝 PR
The pipeline is the actual pipeline that will be referenced in Azure Devops. These pipelines call templates from the jobs folder.
Pipeline example
######################################################
# ADD GLOBAL VARIABLES
######################################################
variables:
- template: 'variables/pipeline-variables.yaml'
######################################################
# DISABLE PR TRIGGER
######################################################
pr: none
######################################################
# TRIGGER ON ANY FEATURE BRANCH
######################################################
trigger:
batch: true
branches:
include:
- feature/*
######################################################
# SET AGENT POOL OR IMAGE PREFERENCE
######################################################
pool:
vmImage: 'Ubuntu-latest'
######################################################
# SET RESOURCES AND REPO DEPENDANCIES
######################################################
resources:
- repo: self
######################################################
# SET STAGES
######################################################
stages:
#######################################################
#### BUILD APPLICATION
#######################################################
- stage: STAGE_BUILD
displayName: 'Build Stage'
jobs:
- template: 'templates/template-build.yaml'
info
Always start with a multistage pipeline, even if you're only using a single stage. Stages are step collections that run in a fixed order, if no dependacies are defined.
Stages example
######################################################
# SET STAGES
######################################################
stages:
#######################################################
#### BUILD APPLICATION
#######################################################
- stage: STAGE_BUILD
#######################################################
#### DEPLOY APPLICATION
#######################################################
- stage: STAGE_DEPLOY
#######################################################
#### E2E APPLICATION
#######################################################
- stage: STAGE_E2E