Release pipeline basics in Azure - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
We want to understand how the time to complete a release pipeline changes as we add more stages or tasks.
How does the pipeline's execution time grow when we increase its size?
Analyze the time complexity of this release pipeline setup.
stages:
- stage: Build
jobs:
- job: BuildJob
steps:
- script: echo Building
- stage: Deploy
jobs:
- job: DeployJob
steps:
- script: echo Deploying
This pipeline has two stages: Build and Deploy, each with one job and simple steps.
Look at what repeats when the pipeline grows.
- Primary operation: Executing each stage with its jobs and steps.
- How many times: Once per stage, and inside each stage once per job and step.
Adding more stages or jobs means more steps to run, so time grows with the number of these elements.
| Input Size (n stages) | Approx. Operations (stages x jobs x steps) |
|---|---|
| 10 | About 10 times the work of 1 stage |
| 100 | About 100 times the work of 1 stage |
| 1000 | About 1000 times the work of 1 stage |
Pattern observation: The total work grows roughly in direct proportion to the number of stages.
Time Complexity: O(n)
This means the time to run the pipeline grows linearly as you add more stages.
[X] Wrong: "Adding more stages won't affect total time because they run automatically."
[OK] Correct: Each stage takes time to run, so more stages add more total time, even if automated.
Understanding how pipeline time grows helps you design efficient release processes and shows you can think about scaling in real projects.
What if we changed the pipeline to run stages in parallel? How would the time complexity change?
Practice
Solution
Step 1: Understand the role of a release pipeline
A release pipeline automates the process of delivering software through stages like testing and production.Step 2: Identify the correct purpose
Among the options, only automating delivery matches the release pipeline's function.Final Answer:
To automate the delivery of applications through different stages -> Option BQuick Check:
Release pipeline = automate delivery [OK]
- Confusing release pipeline with coding or monitoring tools
- Thinking it stores data instead of deploying apps
Solution
Step 1: Review YAML structure for stages
In Azure pipelines, stages are defined under 'stages:' as a list with '- stage:' entries.Step 2: Match correct syntax
stages: - stage: Build jobs: [] correctly uses 'stages:' followed by '- stage: Build' and an empty jobs list.Final Answer:
stages: - stage: Build jobs: [] -> Option DQuick Check:
Stages list starts with 'stages:' and '- stage:' [OK]
- Using singular 'stage:' instead of 'stages:'
- Placing 'stage' inside 'jobs' incorrectly
- Incorrect indentation or list syntax
stages:
- stage: Test
jobs:
- job: RunTests
steps:
- script: echo Testing
What will be the output when this pipeline runs?Solution
Step 1: Understand the script step in pipeline
The 'script' step runs the command given, here 'echo Testing', which prints 'Testing'.Step 2: Predict output
Since the script runs successfully, the output 'Testing' appears in the job logs.Final Answer:
It will print 'Testing' in the job logs -> Option AQuick Check:
Script runs command, prints output [OK]
- Thinking script prints the command text instead of output
- Assuming syntax error without checking YAML correctness
- Expecting no output from script step
stages:
- stage: Deploy
jobs:
- job: DeployJob
steps:
- script: echo Deploying
- script: echo Done
dependsOn: Build
What is wrong with this pipeline configuration?Solution
Step 1: Locate 'dependsOn' usage
'dependsOn' controls stage dependencies and must be placed at the stage level, not inside jobs.Step 2: Identify correct placement
In the snippet, 'dependsOn: Build' is incorrectly placed inside the job, it should be directly under the stage.Final Answer:
'dependsOn' should be inside the stage, not inside jobs -> Option AQuick Check:
'dependsOn' belongs to stage level [OK]
- Placing 'dependsOn' inside jobs instead of stages
- Thinking 'dependsOn' applies to jobs only
- Believing multiple scripts in steps is invalid
Solution
Step 1: Understand stage dependencies
To run Deploy only after Build succeeds, Deploy stage must depend on Build.Step 2: Check YAML for correct 'dependsOn'
stages: - stage: Build jobs: - job: BuildJob steps: - script: echo Building - stage: Deploy dependsOn: Build jobs: - job: DeployJob steps: - script: echo Deploying places 'dependsOn: Build' under Deploy stage, correctly setting the dependency.Step 3: Verify order and jobs
Build stage is first, Deploy second, with proper jobs and steps defined.Final Answer:
Correctly sets Deploy to depend on Build -> Option CQuick Check:
'dependsOn' on Deploy stage = correct dependency [OK]
- Reversing 'dependsOn' causing wrong execution order
- Omitting 'dependsOn' so stages run in parallel
- Placing stages in wrong order without dependencies
