You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: learn-pr/azure-devops/create-multi-stage-pipeline/includes/2-design-the-pipeline.md
+19-17Lines changed: 19 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,15 +15,15 @@ In this section, you:
15
15
16
16
## The meeting
17
17
18
-
The entire Tailspin web team is gathered together. In [Create a release pipeline with Azure Pipelines](/training/modules/create-release-pipeline?azure-portal=true), the team planned their tasks for the current sprint. Each task relates to building their release pipeline for the *Space Game* website.
18
+
The entire Tailspin web team is gathered together. In [Create a release pipeline in Azure Pipelines](/training/modules/create-release-pipeline?azure-portal=true), the team planned their tasks for the current sprint. Each task relates to building their release pipeline for the *Space Game* website.
19
19
20
20
Recall that the team decided on these five tasks for their sprint:
21
21
22
-
- Create a multistage pipeline.
23
-
- Connect the web app to a database.
24
-
- Automate quality tests.
25
-
- Automate performance tests.
26
-
- Improve release cadence.
22
+
- Create a multistage pipeline
23
+
- Connect the web app to a database
24
+
- Automate quality tests
25
+
- Automate performance tests
26
+
- Improve release cadence
27
27
28
28
The team meets to talk about the first task, *Create a multistage pipeline*. After the team defines the pipeline, it can move from its basic proof of concept to a release pipeline that includes more stages, quality checks, and approvals.
29
29
@@ -76,11 +76,11 @@ In Azure Pipelines, **use a condition to run** task or job based on the state of
76
76
Remember, some of the conditions that you can specify are:
77
77
78
78
> [!div class="checklist"]
79
-
> - Only when all previous dependent tasks have succeeded.
80
-
> - Even if a previous dependency has failed, unless the run was canceled.
81
-
> - Even if a previous dependency has failed, even if the run was canceled.
82
-
> - Only when a previous dependency has failed.
83
-
> - Some custom condition.
79
+
> - Only when all previous dependent tasks have succeeded
80
+
> - Even if a previous dependency has failed, unless the run was canceled
81
+
> - Even if a previous dependency has failed, even if the run was canceled
82
+
> - Only when a previous dependency has failed
83
+
> - Some custom condition
84
84
85
85
Here's a basic example:
86
86
@@ -151,7 +151,7 @@ Mara adds the *Test* stage to her drawing on the whiteboard.
151
151
152
152
**Mara:** That sounds good. We can always manually trigger the process as well if we need to. For example, we can trigger it if we need you to verify an important bug fix right away.
153
153
154
-
Mara updates her drawing to show that the build moves from the *Dev* stage to the *Test* stage at 3 A.M. each morning.
154
+
Mara updates her drawing to show that the build moves from the *Dev* stage to the *Test* stage at 3 A.M. each day.
155
155
156
156
:::image type="content" source="../media/2-add-test-stage-schedule.png" alt-text="Diagram that shows the whiteboard showing Build, Dev, and Test stages. The schedule promotes the change from Dev to Test at 3 A.M. each morning.":::
157
157
@@ -170,7 +170,7 @@ CI and PR triggers let you control which branches participate in the overall pro
170
170
171
171
### What are scheduled triggers?
172
172
173
-
A *scheduled trigger* uses [cron syntax](/azure/devops/pipelines/process/scheduled-triggers?azure-portal=true&tabs=yaml#supported-cron-syntax) to cause a build to run on a defined schedule.
173
+
A *scheduled trigger* uses [cron syntax](/azure/devops/pipelines/process/scheduled-triggers?azure-portal=true&tabs=yaml#cron-syntax) to cause a build to run on a defined schedule.
174
174
175
175
On Unix and Linux systems, cron is a popular way to schedule jobs to run on a set time interval or at a specific time. In Azure Pipelines, scheduled triggers use the cron syntax to define when a stage runs.
176
176
@@ -265,7 +265,7 @@ Mara updates her drawing to show that the build moves from *Test* to *Staging* o
265
265
266
266
A *release approval* is a way to pause the pipeline until an approver accepts or rejects the release. To define your release workflow, you can combine approvals, conditions, and triggers.
267
267
268
-
Recall that in [Create a release pipeline with Azure Pipelines](/training/modules/create-release-pipeline?azure-portal=true), you defined an environment in your pipeline configuration to represent your deployment environment. Here's an example from your existing pipeline:
268
+
Recall that in [Create a release pipeline in Azure Pipelines](/training/modules/create-release-pipeline?azure-portal=true), you defined an environment in your pipeline configuration to represent your deployment environment. Here's an example from your existing pipeline:
@@ -316,16 +316,18 @@ Finally, we test only one release at a time. We never change releases in the mid
316
316
317
317
You just saw the team design a pipeline that takes their app all the way from build to staging. The whole point of this pipeline isn't just to make their lives easier. It's to ensure the quality of the software they're delivering to their customers.
318
318
319
-
How do you measure the quality of your release process? The quality of your release process can't be measured directly. What you can measure is how well your process works. If you're constantly changing the process, it might be an indication that there's something wrong. Releases that fail consistently at a particular point in the pipeline might also indicate that there's a problem with the release process.
319
+
How do you measure the quality of your release process? You can't measure it directly. What you can measure is how well your process works. If you're constantly changing the process, it might be an indication that there's something wrong. Releases that fail consistently at a particular point in the pipeline might also indicate that there's a problem with the release process.
320
320
321
321
Do the releases always fail on a particular day or time? Do they always fail after you deploy to a particular environment? Look for these and other patterns to see if some aspects of the release process are dependent or related.
322
322
323
323
A good way to keep track of your release process quality is to create visualizations of the quality of the releases. For example, add a dashboard widget that shows you the status of every release.
324
324
325
325
When you want to measure the quality of a release itself, you can perform all kinds of checks within the pipeline. For example, you can execute different types of tests, such as load tests and UI tests while running your pipeline.
326
326
327
-
Using a quality gate is also a great way to check the quality of your release. There are many different quality gates. For example, work item gates can verify the quality of your requirements process. You can also add more security and compliance checks. For example, do you comply with the four-eyes principle or do you have the proper traceability?
327
+
Using a quality gate is also a great way to check the quality of your release. There are many different quality gates. For example, work item gates can verify the quality of your requirements process.
328
+
329
+
You can also add more security and compliance checks. For example, do you comply with the four-eyes principle or do you have the proper traceability?
328
330
329
331
As you progress through this learning path, you see many of these techniques put into practice.
330
332
331
-
Lastly, when you design a quality release process, think about what kind of documentation or release notes that you need to provide to the user. Keeping your documentation current can be difficult. You might want to consider using a tool, such as the [Azure DevOps Release Notes Generator](/samples/azure-samples/azure-devops-release-notes/azure-devops-release-notes-generator/?azure-portal=true). The generator is a function app that contains an HTTP-triggered function. By using Azure Blob Storage, it creates a Markdown file whenever a new release is created in Azure DevOps.
333
+
Lastly, when you design a quality release process, think about what kind of documentation or release notes that you need to provide to the user. Keeping your documentation current can be difficult. You might want to consider using a tool, such as the [Azure DevOps Release Notes Generator](/samples/azure-samples/azure-devops-release-notes/azure-devops-release-notes-generator/?azure-portal=true), which is a function app that contains an HTTP-triggered function. By using Azure Blob Storage, it creates a Markdown file whenever a new release is created in Azure DevOps.
Copy file name to clipboardExpand all lines: learn-pr/azure-devops/create-multi-stage-pipeline/includes/3-set-up-environment.md
+18-14Lines changed: 18 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,30 +29,34 @@ The modules in this learning path form a progression. You follow the Tailspin we
29
29
30
30
### Run the template
31
31
32
-
Run a template that sets up your Azure DevOps organization:
32
+
Run a template that sets up your Azure DevOps organization.
33
33
34
-
> [!div class="nextstepaction"]
35
-
> [Run the template](https://azuredevopsdemogenerator.azurewebsites.net/?x-ms-routing-name=self&name=create-multi-stage-pipeline&azure-portal=true)
34
+
1.[Get and run the ADOGenerator project](https://github.com/microsoft/AzDevOpsDemoGenerator/blob/main/docs/RunApplication.md) in Visual Studio or the IDE of your choice.
36
35
37
-
From the Azure DevOps Demo Generator site, to run the template, follow these steps.
36
+
1. When prompted to **Enter the template number from the list of templates**, enter **30** for **Create a multi-stage pipeline with Azure Pipelines**, then press **Enter**.
38
37
39
-
1. Select **Sign In**, and accept the usage terms.
40
-
1. On the **Create New Project** page, select your Azure DevOps organization. Enter a project name, such as *Space Game - web - Multistage*.
38
+
1. Choose your authentication method. You can [set up and use a Personal Access Token (PAT)](/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate#create-a-pat) or use device login.
41
39
42
-
:::image type="content" source="../media/4-create-new-project.png" alt-text="A screenshot of the Azure DevOps Demo Generator showing the process for creating the project.":::
40
+
> [!NOTE]
41
+
> If you set up a PAT, make sure to authorize the necessary [scopes](/azure/devops/integrate/get-started/authentication/oauth#scopes). For this module, you can use **Full access**, but in a real-world situation, you should ensure you grant only the necessary scopes.
43
42
44
-
1.Select **Yes, I want to fork this repository** > **Authorize**.
43
+
1.Enter your Azure DevOps organization name, then press **Enter**.
45
44
46
-
If a window appears, authorize access to your GitHub account.
45
+
1. If prompted, enter your Azure DevOps PAT, then press **Enter**.
47
46
48
-
> [!IMPORTANT]
49
-
> You need to select this option so the template will connect to your GitHub repository. Select it even if you've already forked the *Space Game* website project. The template uses your existing fork.
47
+
1. Enter a project name such as *Space Game - web - Multistage*, then press **Enter**.
48
+
49
+
1. Once your project is created, go to your Azure DevOps organization in your browser (at `https://dev.azure.com/<your-organization-name>/`) and select the project.
50
+
51
+
### Fork the repository
52
+
53
+
If you haven't already, create a fork of the **mslearn-tailspin-spacegame-web-deploy** repository.
50
54
51
-
1.Select **Create Project**.
55
+
1.On GitHub, go to the [mslearn-tailspin-spacegame-web-deploy](https://github.com/MicrosoftDocs/mslearn-tailspin-spacegame-web-deploy) repository.
52
56
53
-
The template takes a few moments to run.
57
+
1. Select **Fork** at the top-right of the screen.
54
58
55
-
1.To go to your project in Azure DevOps, select **Navigate to project**.
59
+
1.Choose your GitHub account as the **Owner**, then select **Create fork**.
56
60
57
61
> [!IMPORTANT]
58
62
> In this module, the [Clean up your Azure DevOps environment](/training/modules/create-multi-stage-pipeline/7-clean-up-environment?azure-portal=true) page contains important cleanup steps. Cleaning up helps ensure that you don't run out of free build minutes. Even if you don't complete this module, be sure to follow the cleanup steps.
0 commit comments