Skip to content

Commit 49f0d7c

Browse files
Merge pull request #50262 from ShawnKupfer/WB1779
AB#1044105: Create a multistage pipeline by using Azure Pipelines
2 parents 5fbaa20 + bfa23ce commit 49f0d7c

15 files changed

+256
-253
lines changed
Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
### YamlMime:ModuleUnit
2-
uid: learn.azdo.create-multi-stage-pipeline.1-introduction
3-
title: Introduction
4-
metadata:
5-
title: Introduction
6-
description: Introduction
7-
ms.custom: devdivchpfy22
8-
ms.date: 11/29/2023
9-
author: juliakm
10-
ms.author: jukullam
11-
ms.topic: unit
12-
durationInMinutes: 1
13-
content: |
14-
[!include[](includes/1-introduction.md)]
15-
1+
### YamlMime:ModuleUnit
2+
uid: learn.azdo.create-multi-stage-pipeline.1-introduction
3+
title: Introduction
4+
metadata:
5+
title: Introduction
6+
description: Introduction
7+
ms.custom: devdivchpfy22
8+
ms.date: 05/01/2025
9+
author: juliakm
10+
ms.author: jukullam
11+
ms.topic: unit
12+
durationInMinutes: 1
13+
content: |
14+
[!include[](includes/1-introduction.md)]
15+
Lines changed: 51 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,51 @@
1-
### YamlMime:ModuleUnit
2-
uid: learn.azdo.create-multi-stage-pipeline.2-design-the-pipeline
3-
title: Design the pipeline
4-
metadata:
5-
title: Design the pipeline
6-
description: Define stages in your release pipeline and promote changes from one stage to the next.
7-
ms.custom: devdivchpfy22
8-
ms.date: 11/29/2023
9-
author: juliakm
10-
ms.author: jukullam
11-
ms.topic: unit
12-
durationInMinutes: 11
13-
content: |
14-
[!include[](includes/2-design-the-pipeline.md)]
15-
quiz:
16-
title: Check your knowledge
17-
questions:
18-
- content: "Your pipeline includes many tests and quality checks that take several minutes to finish. Which kind of trigger is best for running tests only on code that was peer reviewed?"
19-
choices:
20-
- content: "A build completion trigger"
21-
isCorrect: false
22-
explanation: "A build completion trigger runs a build when another build, such as one for a dependent component, finishes successfully."
23-
- content: "A CI trigger or PR trigger"
24-
isCorrect: true
25-
explanation: "Use CI and PR triggers to control which branches participate in the overall process. You can use them to run your pipeline only during a pull request or after a pull request is merged into a certain branch, such as `main` or a release branch."
26-
- content: "A scheduled trigger"
27-
isCorrect: false
28-
explanation: "Although you can use a scheduled trigger to run tests regularly, is there a better way to run tests only when they're needed?"
29-
- content: "What's the best way to pause the pipeline until an approver signs off on a change?"
30-
choices:
31-
- content: "Use a release approval."
32-
isCorrect: true
33-
explanation: "A release approval pauses the pipeline until an approver accepts or rejects the release."
34-
- content: "Install a Marketplace extension that provides Azure Pipelines tasks that can pause the pipeline."
35-
isCorrect: false
36-
explanation: "Although you might find an extension that can fulfill your need, can you use a built-in mechanism instead?"
37-
- content: "Ask your approver to look at the change. Then manually trigger the pipeline to run."
38-
isCorrect: false
39-
explanation: "Is there an automated way to allow the approver to see the working software and then promote it to the next stage?"
40-
- content: "You want to deploy your web app to the _Test_ environment each time a build finishes. What's the easiest way to set up the process?"
41-
choices:
42-
- content: "Use a scheduled trigger."
43-
isCorrect: false
44-
explanation: "Although a scheduled trigger enables you to build your web app and pick up the latest dependencies on a regular schedule, it doesn't trigger your pipeline to run when a build finishes."
45-
- content: "Watch for build notification emails and manually trigger your build when the other one finishes successfully."
46-
isCorrect: false
47-
explanation: "This method is inefficient. Is there a way to trigger the build automatically?"
48-
- content: "Use a build completion trigger."
49-
isCorrect: true
50-
explanation: "A build completion trigger runs a build when another build, such as one for a dependent component, finishes successfully."
51-
1+
### YamlMime:ModuleUnit
2+
uid: learn.azdo.create-multi-stage-pipeline.2-design-the-pipeline
3+
title: Design the pipeline
4+
metadata:
5+
title: Design the pipeline
6+
description: Define stages in your release pipeline and promote changes from one stage to the next.
7+
ms.custom: devdivchpfy22
8+
ms.date: 05/01/2025
9+
author: juliakm
10+
ms.author: jukullam
11+
ms.topic: unit
12+
durationInMinutes: 11
13+
content: |
14+
[!include[](includes/2-design-the-pipeline.md)]
15+
quiz:
16+
title: Check your knowledge
17+
questions:
18+
- content: "Your pipeline includes many tests and quality checks that take several minutes to finish. Which kind of trigger is best for running tests only on code that was peer reviewed?"
19+
choices:
20+
- content: "A build completion trigger"
21+
isCorrect: false
22+
explanation: "A build completion trigger runs a build when another build, such as one for a dependent component, finishes successfully."
23+
- content: "A CI trigger or PR trigger"
24+
isCorrect: true
25+
explanation: "Use CI and PR triggers to control which branches participate in the overall process. You can use them to run your pipeline only during a pull request or after a pull request is merged into a certain branch, such as `main` or a release branch."
26+
- content: "A scheduled trigger"
27+
isCorrect: false
28+
explanation: "Although you can use a scheduled trigger to run tests regularly, is there a better way to run tests only when they're needed?"
29+
- content: "What's the best way to pause the pipeline until an approver signs off on a change?"
30+
choices:
31+
- content: "Use a release approval."
32+
isCorrect: true
33+
explanation: "A release approval pauses the pipeline until an approver accepts or rejects the release."
34+
- content: "Install a Marketplace extension that provides Azure Pipelines tasks that can pause the pipeline."
35+
isCorrect: false
36+
explanation: "Although you might find an extension that can fulfill your need, can you use a built-in mechanism instead?"
37+
- content: "Ask your approver to look at the change. Then manually trigger the pipeline to run."
38+
isCorrect: false
39+
explanation: "Is there an automated way to allow the approver to see the working software and then promote it to the next stage?"
40+
- content: "You want to deploy your web app to the _Test_ environment each time a build finishes. What's the easiest way to set up the process?"
41+
choices:
42+
- content: "Use a scheduled trigger."
43+
isCorrect: false
44+
explanation: "Although a scheduled trigger enables you to build your web app and pick up the latest dependencies on a regular schedule, it doesn't trigger your pipeline to run when a build finishes."
45+
- content: "Watch for build notification emails and manually trigger your build when the other one finishes successfully."
46+
isCorrect: false
47+
explanation: "This method is inefficient. Is there a way to trigger the build automatically?"
48+
- content: "Use a build completion trigger."
49+
isCorrect: true
50+
explanation: "A build completion trigger runs a build when another build, such as one for a dependent component, finishes successfully."
51+
Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
### YamlMime:ModuleUnit
2-
uid: learn.azdo.create-multi-stage-pipeline.3-set-up-environment
3-
title: Exercise - Set up your Azure DevOps environment
4-
metadata:
5-
title: Exercise - Set up your Azure DevOps environment
6-
description: Create your Azure DevOps project and Azure resources.
7-
ms.custom: devdivchpfy22, devx-track-azurecli
8-
ms.date: 11/29/2023
9-
author: juliakm
10-
ms.author: jukullam
11-
ms.topic: unit
12-
durationInMinutes: 15
13-
content: |
14-
[!include[](includes/3-set-up-environment.md)]
15-
1+
### YamlMime:ModuleUnit
2+
uid: learn.azdo.create-multi-stage-pipeline.3-set-up-environment
3+
title: Exercise - Set up your Azure DevOps environment
4+
metadata:
5+
title: Exercise - Set up your Azure DevOps environment
6+
description: Create your Azure DevOps project and Azure resources.
7+
ms.custom: devdivchpfy22, devx-track-azurecli
8+
ms.date: 05/01/2025
9+
author: juliakm
10+
ms.author: jukullam
11+
ms.topic: unit
12+
durationInMinutes: 15
13+
content: |
14+
[!include[](includes/3-set-up-environment.md)]
15+
Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
### YamlMime:ModuleUnit
2-
uid: learn.azdo.create-multi-stage-pipeline.4-promote-dev
3-
title: Exercise - Promote to the Dev stage
4-
metadata:
5-
title: Exercise - Promote to the Dev stage
6-
description: Promote to the Dev stage by using a build trigger.
7-
ms.custom: devdivchpfy22
8-
ms.date: 11/29/2023
9-
author: juliakm
10-
ms.author: jukullam
11-
ms.topic: unit
12-
durationInMinutes: 8
13-
content: |
14-
[!include[](includes/4-promote-dev.md)]
15-
1+
### YamlMime:ModuleUnit
2+
uid: learn.azdo.create-multi-stage-pipeline.4-promote-dev
3+
title: Exercise - Promote to the Dev stage
4+
metadata:
5+
title: Exercise - Promote to the Dev stage
6+
description: Promote to the Dev stage by using a build trigger.
7+
ms.custom: devdivchpfy22
8+
ms.date: 05/01/2025
9+
author: juliakm
10+
ms.author: jukullam
11+
ms.topic: unit
12+
durationInMinutes: 8
13+
content: |
14+
[!include[](includes/4-promote-dev.md)]
15+
Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
### YamlMime:ModuleUnit
2-
uid: learn.azdo.create-multi-stage-pipeline.5-promote-test
3-
title: Exercise - Promote to the Test stage
4-
metadata:
5-
title: Exercise - Promote to the Test stage
6-
description: Promote to the Test stage by using a scheduled trigger.
7-
ms.custom: devdivchpfy22
8-
ms.date: 11/29/2023
9-
author: juliakm
10-
ms.author: jukullam
11-
ms.topic: unit
12-
durationInMinutes: 8
13-
content: |
14-
[!include[](includes/5-promote-test.md)]
15-
1+
### YamlMime:ModuleUnit
2+
uid: learn.azdo.create-multi-stage-pipeline.5-promote-test
3+
title: Exercise - Promote to the Test stage
4+
metadata:
5+
title: Exercise - Promote to the Test stage
6+
description: Promote to the Test stage by using a scheduled trigger.
7+
ms.custom: devdivchpfy22
8+
ms.date: 05/01/2025
9+
author: juliakm
10+
ms.author: jukullam
11+
ms.topic: unit
12+
durationInMinutes: 8
13+
content: |
14+
[!include[](includes/5-promote-test.md)]
15+
Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
### YamlMime:ModuleUnit
2-
uid: learn.azdo.create-multi-stage-pipeline.7-clean-up-environment
3-
title: Exercise - Clean up your Azure DevOps environment
4-
metadata:
5-
title: Exercise - Clean up your Azure DevOps environment
6-
description: Clean up your Azure DevOps project and your Azure resources.
7-
ms.custom: devdivchpfy22
8-
ms.date: 11/29/2023
9-
author: juliakm
10-
ms.author: jukullam
11-
ms.topic: unit
12-
durationInMinutes: 7
13-
content: |
14-
[!include[](includes/7-clean-up-environment.md)]
15-
1+
### YamlMime:ModuleUnit
2+
uid: learn.azdo.create-multi-stage-pipeline.7-clean-up-environment
3+
title: Exercise - Clean up your Azure DevOps environment
4+
metadata:
5+
title: Exercise - Clean up your Azure DevOps environment
6+
description: Clean up your Azure DevOps project and your Azure resources.
7+
ms.custom: devdivchpfy22
8+
ms.date: 05/01/2025
9+
author: juliakm
10+
ms.author: jukullam
11+
ms.topic: unit
12+
durationInMinutes: 7
13+
content: |
14+
[!include[](includes/7-clean-up-environment.md)]
15+
Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
### YamlMime:ModuleUnit
2-
uid: learn.azdo.create-multi-stage-pipeline.8-summary
3-
title: Summary
4-
metadata:
5-
title: Summary
6-
description: Summary
7-
ms.custom: devdivchpfy22
8-
ms.date: 11/29/2023
9-
author: juliakm
10-
ms.author: jukullam
11-
ms.topic: unit
12-
durationInMinutes: 2
13-
content: |
14-
[!include[](includes/8-summary.md)]
15-
1+
### YamlMime:ModuleUnit
2+
uid: learn.azdo.create-multi-stage-pipeline.8-summary
3+
title: Summary
4+
metadata:
5+
title: Summary
6+
description: Summary
7+
ms.custom: devdivchpfy22
8+
ms.date: 05/01/2025
9+
author: juliakm
10+
ms.author: jukullam
11+
ms.topic: unit
12+
durationInMinutes: 2
13+
content: |
14+
[!include[](includes/8-summary.md)]
15+

learn-pr/azure-devops/create-multi-stage-pipeline/includes/1-introduction.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
In [Create a release pipeline with Azure Pipelines](/training/modules/create-release-pipeline?azure-portal=true), you built a basic release pipeline. That pipeline has a *Build* stage that builds the artifact, and a *Deploy* stage that installs the web app on Azure App Service. Mara and Andy built this pipeline as a proof of concept that they showed to the rest of the team.
1+
In [Create a release pipeline in Azure Pipelines](/training/modules/create-release-pipeline?azure-portal=true), you built a basic release pipeline. That pipeline has a *Build* stage that builds the artifact, and a *Deploy* stage that installs the web app on Azure App Service. Mara and Andy built this pipeline as a proof of concept that they showed to the rest of the team.
22

33
An actual release pipeline has more stages. Each stage has its own set of tasks that can potentially take an artifact all the way to production.
44

55
In this module, you join the Tailspin Toys web team as they design a realistic release pipeline that contains multiple stages. You also learn different ways to control how an artifact is promoted from one stage to the next.
66

7-
A good release-management workflow enables you to release more frequently and more consistently. In practice, you want to define a process that maps to your team's needs. Here you create a basic workflow. That means first designing the environments. The environments define the runtimes of each stage in the pipeline. Then, you deploy the *Space Game* web app to these stages: *Dev*, *Test*, and *Staging*. Each stage deploys the app to its own App Service instance.
7+
A good release-management workflow lets you release more frequently and more consistently. In practice, you want to define a process that maps to your team's needs. Here, you create a basic workflow. That means first designing the environments. The environments define the runtimes of each stage in the pipeline. Then, you deploy the *Space Game* web app to these stages: *Dev*, *Test*, and *Staging*. Each stage deploys the app to its own App Service instance.
88

99
## Learning objectives
1010

11-
After completing this module, you're able to:
11+
After completing this module, you should able to:
1212

1313
- Identify the *stages*, or major divisions of the pipeline, that you need to implement in a multistage pipeline.
1414
- Explain when to use conditions, triggers, and approvals to promote changes from one stage to the next.

0 commit comments

Comments
 (0)