Greetings my fellow Technology Advocates and Specialists.
This is the Chapter #1 of my Mastering Loops in Azure DevOps Series.
In this Session, I will walk you through The Art of Iteration: Starting the Cycle.
This is a quick start guide to introduce the topic and how it is relevant to the real world.
IMPORTANT NOTE:- |
---|
The YAML Pipeline is tested on WINDOWS BUILD AGENT Only!!!
REQUIREMENTS:- |
---|
- Azure Subscription.
- Azure DevOps Organisation and Project.
- Service Principal with Required RBAC (Contributor) applied on Subscription or Resource Group(s).
- Azure Resource Manager Service Connection in Azure DevOps.
CODE REPOSITORY:- |
---|
Mastering Loops in Azure DevOps:-
Greetings to my fellow Technology Advocates and Specialists.
This is "Mastering Loops in Azure DevOps" Series !
DATE | TOPICS | CONTENT |
---|---|---|
03.01.2025 | The Art of Iteration: Starting the Cycle | https://dev.to/arindam0310018/the-art-of-iteration-starting-the-cycle-1op |
REFERENCE LINKS:- |
---|
1. Microsoft Learn - Azure Devops - Expressions. |
HOW DOES MY CODE PLACEHOLDER LOOKS LIKE:-:- |
---|
MILLION DOLLAR QUESTION:- |
---|
Question: Can we use "Loop" in Azure Devops YAML Pipeline ? |
Answer: YES |
HOW ? |
---|
Concise summary follows below:- |
1.) We can use "Loop" in Azure Devops YAML Pipeline by using the "each" keyword. |
2.) We can use the "each" keyword to loop through a) Parameters with the type as b) Object. |
3.) Additionally, you can iterate through Nested elements within an Object. |
EXAMPLE:- |
---|
PIPELINE CODE SNIPPET:- |
---|
AZURE DEVOPS YAML PIPELINE (azure-pipelines-Leverage-Loops-For-Automation-Initial-Test.yml):- |
---|
trigger:
none
######################
#DECLARE PARAMETERS:-
######################
parameters:
- name: RGNAME
displayName: Please Provide the Resource Group Name:-
type: object
default: [AMRG001,AMRG002,AMRG003]
######################
#DECLARE VARIABLES:-
######################
variables:
BuildAgent: windows-latest
#########################
# Declare Build Agents:-
#########################
pool:
vmImage: $(BuildAgent)
###################
# Declare Stages:-
###################
stages:
- ${{ each rg in parameters.RGNAME }}:
- stage: CREATE_${{ rg }}
jobs:
- job: CreateResourceGroup
steps:
- script: echo "Creating "${{ rg }}""
EXPLANATION:- |
---|
I.) Declare "Parameter" of type "Object". In this example, I have declared 3 values (Resource Group Names) as an array.
######################
#DECLARE PARAMETERS:-
######################
parameters:
- name: RGNAME
displayName: Please Provide the Resource Group Name:-
type: object
default: [AMRG001,AMRG002,AMRG003]
II.) Declare "Each" at beginning of the Pipeline stage. The "rg" variable stores all the values that the "each" keyword iterates over in the parameter of type object.
stages:
- ${{ each rg in parameters.RGNAME }}:
III.) As there are 3 values declared in "Parameter" of type "Object", there will be 3 STAGES CREATED.
IV.) Name of each stage will be one of iterated value from the array declared in "Parameter" of type "Object".
- stage: CREATE_${{ rg }}
V.) Finally, each stage displays the Value in the console.
steps:
- script: echo "Creating "${{ rg }}""
OUTPUT OF EXAMPLE:- |
---|
1. As in the example, there were 3 values declared in "Parameter" of type "Object", hence 3 STAGES got created. |
2. Name of each stage is the iterated value from the array declared in "Parameter" of type "Object". |
3. Each stage displays the Value in the console. |
STAGE #1: CREATE_AMRG001 |
STAGE #2: CREATE_AMRG002 |
STAGE #3: CREATE_AMRG003 |
Hope You Enjoyed the Session!!!
Stay Safe | Keep Learning | Spread Knowledge
Top comments (0)