Build pipeline basics in Azure - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
When we run a build pipeline in Azure, it performs a series of steps to prepare our code. Understanding how the time it takes grows as we add more tasks helps us plan better.
We want to know: How does the total work increase when the pipeline has more steps?
Analyze the time complexity of the following Azure pipeline YAML snippet.
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
steps:
- script: echo "Step 1"
- script: echo "Step 2"
- script: echo "Step 3"
- script: echo "Step 4"
- script: echo "Step 5"
This pipeline runs five script steps one after another on a virtual machine.
Look at the steps that repeat in the pipeline.
- Primary operation: Each script step runs a command.
- How many times: Once per step, here 5 times.
As we add more steps, the total time grows with the number of steps.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 steps | 10 script runs |
| 100 steps | 100 script runs |
| 1000 steps | 1000 script runs |
Pattern observation: The total work grows directly with the number of steps added.
Time Complexity: O(n)
This means if you double the number of steps, the total time roughly doubles too.
[X] Wrong: "Adding more steps won't affect total time much because they run fast."
[OK] Correct: Even if each step is quick, more steps add up and increase total time linearly.
Understanding how pipeline steps add up helps you design efficient builds and shows you can think about scaling work in real projects.
"What if we run some steps in parallel instead of one after another? How would the time complexity change?"
Practice
Solution
Step 1: Understand the role of a build pipeline
A build pipeline automates tasks like compiling code and running tests when code changes.Step 2: Identify the main goal
The main goal is to prepare code automatically for deployment or further steps.Final Answer:
To automate the process of preparing code for deployment -> Option CQuick Check:
Build pipeline purpose = automate code preparation [OK]
- Confusing build pipeline with code repository
- Thinking build pipelines monitor user activity
- Assuming build pipelines are for manual testing
Solution
Step 1: Understand trigger syntax in YAML
The trigger block uses 'branches' with 'include' to specify branches that start the pipeline.Step 2: Check each option
trigger:\n branches:\n include:\n - main correctly includes 'main' branch under 'branches' and 'include'. trigger:\n branches:\n exclude:\n - main excludes 'main', which disables trigger on it. trigger:\n paths:\n include:\n - main uses 'paths' which triggers on file changes, not branches. trigger:\n branches:\n - main misses 'include' keyword, so syntax is incorrect.Final Answer:
trigger:\n branches:\n include:\n - main -> Option DQuick Check:
Correct trigger syntax includes branches: include [OK]
- Using 'exclude' instead of 'include' to trigger
- Confusing 'paths' with 'branches' in triggers
- Omitting 'include' keyword causing syntax errors
steps: - script: echo Hello, Azure DevOps! displayName: 'Print greeting'
Solution
Step 1: Understand the script step in YAML
The 'script' keyword runs the command given, here 'echo Hello, Azure DevOps!'.Step 2: Identify the output of the echo command
The echo command prints the text 'Hello, Azure DevOps!' to the pipeline logs.Final Answer:
Hello, Azure DevOps! -> Option BQuick Check:
Script echo output = Hello, Azure DevOps! [OK]
- Confusing displayName with output
- Thinking script keyword prints itself
- Assuming no output if displayName is set
trigger:
branches:
include:
- main
steps:
- script: echo Build started
What is the likely cause?Solution
Step 1: Analyze the trigger branches
The trigger includes only the 'main' branch, so changes in 'develop' won't start the pipeline.Step 2: Check other parts for errors
The script step is valid without displayName, echo syntax is correct, and indentation looks fine.Final Answer:
The trigger only includes the 'main' branch, not 'develop' -> Option AQuick Check:
Trigger branches must include target branch [OK]
- Assuming script needs displayName to run
- Thinking echo command syntax causes trigger failure
- Ignoring trigger branch filters
Solution
Step 1: Understand branch and path filters
To trigger on 'release' branch and only when files in 'src/' change, include 'release' in branches and 'src/**' in paths.Step 2: Evaluate each option
trigger:\n branches:\n include:\n - release\n paths:\n include:\n - src/** correctly includes 'release' branch and 'src/**' path. trigger:\n branches:\n include:\n - release\n paths:\n exclude:\n - src/** excludes 'src/**' so it won't trigger on those files. trigger:\n branches:\n exclude:\n - release\n paths:\n include:\n - src/** excludes 'release' branch, so no trigger on it. trigger:\n branches:\n include:\n - main\n paths:\n include:\n - src/** triggers on 'main' branch, not 'release'.Final Answer:
trigger:\n branches:\n include:\n - release\n paths:\n include:\n - src/** -> Option AQuick Check:
Include branch and path filters to trigger correctly [OK]
- Using exclude instead of include for paths
- Triggering on wrong branch
- Forgetting to specify paths filter
