Skip to main content

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:

  1. 📁 devops, containing al yml pipeline files
  2. 📁 src, containing the source code of the project

The DevOps folder contains subfolders:

  1. 📁 pipelines
  2. 📁 jobs
  3. 📁 scripts
  4. 📁 variables

Pipelines

The pipelines folder contains all the different pipelines for:

  1. 📝 Provisioning
  2. 📝 Build
  3. 📝 Test Release
  4. 📝 Production Release
  5. 📝 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