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
@@ -159,7 +199,7 @@ extension in the GitHub Marketplace.
159
199
1. Select the repositories you want to include (or **All
160
200
repositories**) and click **Install**.
161
201
162
-
>**Note**that if you've previously installed Azure Pipelines, you may
202
+
>**Note:**If you've previously installed Azure Pipelines, you may
163
203
need to toggle between the "All" and "Select" radio buttons to enable the
164
204
wizard in Task 2. You can always create the pipeline directly from Azure
165
205
Pipelines if the wizard does not appear.
@@ -180,8 +220,7 @@ Now that Azure Pipelines has been installed in the GitHub account, we can config
180
220
181
221

182
222
183
-
184
-
>Every build pipeline is simply a set of tasks. Whether it's copying files, compiling source, or publishing artifacts, the existing library of tasks covers the vast majority of scenarios. You can even create your own if you have specialized needs not already covered. We're going to use YAML, a markup syntax that lends itself well to describing the build pipeline. Note that the Node.js pipeline as a starting point based on an analysis of our source project. We'll replace the contents with the final YAML required for our project.
223
+
Every build pipeline is simply a set of tasks. Whether it's copying files, compiling source, or publishing artifacts, the existing library of tasks covers the vast majority of scenarios. You can even create your own if you have specialized needs not already covered. We're going to use YAML, a markup syntax that lends itself well to describing the build pipeline. Note that the Node.js pipeline as a starting point based on an analysis of our source project. We'll replace the contents with the final YAML required for our project.
185
224
186
225
3. Select the recommended template.
187
226
@@ -190,31 +229,46 @@ Now that Azure Pipelines has been installed in the GitHub account, we can config
190
229
4. Replace the default template with the YAML below.
191
230
192
231
````yaml
193
-
232
+
194
233
pool:
195
234
vmImage: 'ubuntu-16.04'
196
235
197
236
steps:
198
-
- task: CopyFiles@2
199
-
displayName: 'Copy Files to: $(build.artifactstagingdirectory)/Templates'
@@ -245,7 +299,7 @@ Now that Azure Pipelines has been installed in the GitHub account, we can config
245
299
246
300

247
301
248
-
\> The first item to define in a release pipeline is exactly what will be released and when. In our case, it's the output
302
+
The first item to define in a release pipeline is exactly what will be released and when. In our case, it's the output
249
303
generated from the build pipeline. Note that we could also assign a
250
304
schedule, such as if we wanted to release the latest build every
251
305
night.
@@ -259,7 +313,7 @@ Now that Azure Pipelines has been installed in the GitHub account, we can config
259
313
260
314

261
315
262
-
\> As we did with continuous integration starting on a source commit, we also want to have this pipeline automatically start when the build pipeline completes. It's just as easy.
316
+
As we did with continuous integration starting on a source commit, we also want to have this pipeline automatically start when the build pipeline completes. It's just as easy.
263
317
264
318
5. Click the **Triggers** button on the artifact.
265
319
@@ -269,7 +323,7 @@ Now that Azure Pipelines has been installed in the GitHub account, we can config
269
323
270
324

271
325
272
-
\> We also have the option of adding quality gates to the release process. For example, we could require that a specific user or group approve a release before it continues, or that they approve it after it's been deployed. These gates provide notifications to the necessary groups, as well as polling support if you're automating the gates using something dynamic, such as an Azure function, REST API, work item query, and more. We won't add any of that here, but we could easily come back and do it later on.
326
+
We also have the option of adding quality gates to the release process. For example, we could require that a specific user or group approve a release before it continues, or that they approve it after it's been deployed. These gates provide notifications to the necessary groups, as well as polling support if you're automating the gates using something dynamic, such as an Azure function, REST API, work item query, and more. We won't add any of that here, but we could easily come back and do it later on.
273
327
274
328
7. Click the **pre-deployment conditions** button.
275
329
@@ -279,7 +333,7 @@ Now that Azure Pipelines has been installed in the GitHub account, we can config
279
333
280
334

281
335
282
-
\> In this pipeline, we're going to need to specify the same resource group in multiple tasks, so it's a good practice
336
+
In this pipeline, we're going to need to specify the same resource group in multiple tasks, so it's a good practice
283
337
to use a pipeline variable. We'll add one here for the new Azure resource group we want to provision our resources to. Note that
284
338
there are also a variety of deployment options we can configure, as well as a retention policy.
285
339
@@ -293,7 +347,7 @@ Now that Azure Pipelines has been installed in the GitHub account, we can config
293
347
294
348

295
349
296
-
\> Also, just like the build pipeline, the release pipeline is really just a set of tasks. There are many
350
+
Also, just like the build pipeline, the release pipeline is really just a set of tasks. There are many
297
351
out-of-the-box tasks available, and you can build your own if needed. The first task our release requires is to set up the Azure
298
352
deployment environment if it doesn't yet exist. After we add the task, I can authorize access to the Azure account I want to deploy
299
353
to and instruct it to use the variable name we just specified for the resource group name.
@@ -324,7 +378,7 @@ Now that Azure Pipelines has been installed in the GitHub account, we can config
324
378
325
379

326
380
327
-
\> Rather than having to manually create the Azure
381
+
Rather than having to manually create the Azure
328
382
resources required to host the web app, the team has defined an
329
383
Azure Resource Manager---or ARM---template that describes the
330
384
environment in JSON. This allows the environment definition to be
@@ -350,7 +404,7 @@ Now that Azure Pipelines has been installed in the GitHub account, we can config
350
404
351
405

352
406
353
-
\> When this task completes, it will have generated
407
+
When this task completes, it will have generated
354
408
an Azure resource group with the resources required to run our
355
409
application. However, the ARM template does some processing of the
356
410
variables to generate names for the resources based on the input
@@ -379,7 +433,7 @@ Now that Azure Pipelines has been installed in the GitHub account, we can config
379
433
380
434

381
435
382
-
\> Now let's get back to adding the ARM Outputs
436
+
Now let's get back to adding the ARM Outputs
383
437
task. The key variable we care about here is the name of the app
384
438
service created, which our ARM template has specified as an output.
385
439
This task will populate it for us to use as the "web" variable in
@@ -398,7 +452,7 @@ Now that Azure Pipelines has been installed in the GitHub account, we can config
398
452
399
453

400
454
401
-
\> Finally, we can deploy the app service. We'll use
455
+
Finally, we can deploy the app service. We'll use
402
456
the same subscription as earlier and specify the web variable as the
403
457
name of the app service we want to deploy to. By this time in the
404
458
pipeline, it will have been filled in for us by the ARM Outputs
@@ -432,7 +486,7 @@ Now that Azure Pipelines has been installed in the GitHub account, we can config
432
486
433
487
### Task 4 -- Invoking Continuous Delivery from GitHub to Azure
434
488
435
-
\> Now that we have our pipelines in place, it's time to
489
+
Now that we have our pipelines in place, it's time to
436
490
commit a change to the master branch on GitHub. We're going to pull down
437
491
the azure-pipelines.yml file added by Azure DevOps during the build
438
492
creation and commit a slight edit to trigger the CI/CD process.
@@ -448,7 +502,7 @@ creation and commit a slight edit to trigger the CI/CD process.
448
502
449
503

450
504
451
-
\> Before we make our change, let's take a quick
505
+
Before we make our change, let's take a quick
452
506
look at the build tasks. There are four steps required for the
453
507
build. First, deployment templates are copied to a target folder for
454
508
use during the release process. Next, the project is built with NPM.
@@ -469,7 +523,7 @@ creation and commit a slight edit to trigger the CI/CD process.
469
523
470
524
8. Press **Ctrl+S** to save the file.
471
525
472
-
\> Now we can commit and push the updated build
526
+
Now we can commit and push the updated build
473
527
definition to GitHub. This will invoke a continuous integration
474
528
build in Azure DevOps, which will trigger a continuous delivery to
475
529
Azure upon completion.
@@ -491,7 +545,7 @@ creation and commit a slight edit to trigger the CI/CD process.
491
545
492
546

493
547
494
-
\> Back in Azure DevOps, we can see that our build
548
+
Back in Azure DevOps, we can see that our build
495
549
pipeline has kicked off a new build. We can follow as it executes
496
550
the tasks we defined earlier, and even get a real-time view into
497
551
what's going on at each step. When the build completes, we can
@@ -514,7 +568,7 @@ creation and commit a slight edit to trigger the CI/CD process.
514
568
515
569

516
570
517
-
\> Now that the build has completed, let's check out
571
+
Now that the build has completed, let's check out
518
572
the release. It was automatically invoked by the successful
519
573
completion of the build pipeline, and we can follow it all the same.
520
574
Since this is the first time we're deploying, Azure will need to
@@ -546,8 +600,7 @@ creation and commit a slight edit to trigger the CI/CD process.
546
600
547
601
# Exercise 2 -- Managing GitHub Projects with Azure DevOps
548
602
549
-
550
-
DevOps is not just about automation; while continuous integartion and continuous delivery are key practices, teams also need continuous planning. As the saying software developmement is a team sport - it is vital that everyone stays on the same page.
603
+
DevOps is not just about automation; while continuous integartion and continuous delivery are key practices, teams also need continuous planning. As the saying software developmement is a team sport - it is vital that everyone stays on the same page.
551
604
552
605
Azure Boards provides a wealth of project management functionality that spans Kanban boards, backlogs, team dashboards, and
553
606
custom reporting. By connecting Azure Boards with GitHub repositories, teams can take advantage of the rich project management capabilities. You can create links between GitHub commits and pull requests to work items tracked in Azure Boards. This enables a seamless way for you to use GitHub for software development while using Azure Boards to plan and track your work.
@@ -563,17 +616,17 @@ custom reporting. By connecting Azure Boards with GitHub repositories, teams can
563
616
564
617

565
618
566
-
\> In our scenario, users will need to be able to book flights by selecting the cities involved. We will create a new
619
+
In our scenario, users will need to be able to book flights by selecting the cities involved. We will create a new
567
620
user story to sort the airports listed in the booking form in alphabetical order by city. Ordinarily we would create the user
568
-
story at a higher level and add tasks to define how the story is to be implemented, but for our demo purposes here we'll leave it as a
569
-
single work item.
621
+
story at a higher level and add tasks to define how the story is to be implemented, but for our demo purposes here we'll leave it as
622
+
a single work item.
570
623
571
624
3. Click **New Work Item** and add a user story with the title **"User
572
625
can select airport by city"**. Press **Enter** to create.
573
626
574
627

575
628
576
-
\> In addition to working with work items in a backlog, we have a very flexible Kanban board option. With the
629
+
In addition to working with work items in a backlog, we have a very flexible Kanban board option. With the
577
630
board, we can edit items on a card in line, or even drag cards around to change their state and assignment. Let's take ownership of
578
631
the new user story so we can begin work.
579
632
@@ -591,7 +644,7 @@ custom reporting. By connecting Azure Boards with GitHub repositories, teams can
591
644
592
645

593
646
594
-
\> In order to complete our integration, we'll need to wire up a connection between this project and the GitHub repo.
647
+
In order to complete our integration, we'll need to wire up a connection between this project and the GitHub repo.
595
648
596
649
7. Click **Project settings**.
597
650
@@ -609,7 +662,7 @@ custom reporting. By connecting Azure Boards with GitHub repositories, teams can
609
662
610
663

611
664
612
-
\> Let's take a look at our deployed site to see
665
+
Let's take a look at our deployed site to see
613
666
what the current booking experience is like. As you can see, the
614
667
airports appear to be sorted by airport code, which isn't the
615
668
behavior we want our users to see.
@@ -642,7 +695,7 @@ Task 8 -- Committing to Complete a Task
642
695
643
696
1. Return to **Visual Studio Code**.
644
697
645
-
\> We'll start off by creating a new branch for this
698
+
We'll start off by creating a new branch for this
646
699
task. The work itself is pretty straightforward. We just need to
647
700
locate the place where airports are provided to the user experience
648
701
and make sure they're being sorted by city name.
@@ -685,7 +738,7 @@ Task 8 -- Committing to Complete a Task
685
738
686
739
7. Press **Ctrl+S** to save the file.
687
740
688
-
\> We'll skip testing this locally for the sake of
741
+
We'll skip testing this locally for the sake of
689
742
the demo. Instead, we'll commit it using a comment that includes
690
743
special syntax to link it to the Azure Boards task we saw earlier.
691
744
Now this commit will become trackable from project management, as
@@ -706,7 +759,7 @@ Task 8 -- Committing to Complete a Task
706
759
707
760
10. When the push has completed, return to the GitHub browser tab.
708
761
709
-
\> With the commit pushed, we'll create a pull
762
+
With the commit pushed, we'll create a pull
710
763
request to drive those changes back into the master branch. In this
711
764
case we're inheriting the title from the commit, but having the pull
712
765
request mention "Fixes AB\#ID" will link and complete the target
@@ -732,7 +785,7 @@ Task 8 -- Committing to Complete a Task
732
785
733
786
14. Return to Visual Studio Code.
734
787
735
-
\> Now we'll switch to the other side of the pull
788
+
Now we'll switch to the other side of the pull
736
789
request and take on the role of reviewer. We can use Visual Studio
737
790
Code to check out the pull request, analyze changes, and comment.
738
791
Assuming we trust the fix, we can merge the pull request to update
@@ -764,7 +817,7 @@ Task 8 -- Committing to Complete a Task
764
817

765
818
766
819
767
-
\> Once the deployment works its way through build
820
+
Once the deployment works its way through build
768
821
and release, we can confirm the new functionality.
769
822
770
823
20. Follow the CI/CD pipeline through to completion.
@@ -778,7 +831,7 @@ Task 8 -- Committing to Complete a Task
778
831
779
832
22. Return to the Azure DevOps tab open to the Kanban board.
780
833
781
-
\> Since the user story we were working on was
834
+
Since the user story we were working on was
782
835
linked in a pull request that was approved, Azure DevOps will
783
836
automatically transition the state of the work item to "Closed". You
784
837
can also see that the related GitHub commits and pull request were
0 commit comments