{"id":3080,"date":"2022-04-21T12:52:34","date_gmt":"2022-04-21T12:52:34","guid":{"rendered":"https:\/\/exceedthecloud.com\/?p=3080"},"modified":"2022-04-22T10:32:48","modified_gmt":"2022-04-22T10:32:48","slug":"enabling-continuous-integration-with-azure-pipelines","status":"publish","type":"post","link":"https:\/\/exceedthecloud.com\/?p=3080","title":{"rendered":"Enabling Continuous Integration with Azure Pipelines"},"content":{"rendered":"\n<p>In this lab, you will learn how to configure continuous integration (CI) and continuous deployment (CD) for your applications using Build and Release in Azure Pipelines. This scriptable CI\/CD system is both web-based and cross-platform, while also providing a modern interface for visualizing sophisticated workflows. Although we won\u2019t demonstrate all of the cross-platform possibilities in this lab, it is important to point out that you can also build for iOS, Android, Java (using Ant, Maven, or Gradle) and Linux.<\/p>\n\n\n\n<p>After you complete this lab, you will be able to:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Create a basic build pipeline from a template<\/li><li>Track and review a build<\/li><li>Invoke a continuous integration build<\/li><\/ul>\n\n\n\n<p>Review applications required for this lab<\/p>\n\n\n\n<p>Identify the applications that you\u2019ll use in this lab:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Microsoft Edge<\/li><\/ul>\n\n\n\n<p><strong>Set up an Azure DevOps organization.<\/strong><\/p>\n\n\n\n<p>If you don\u2019t already have an Azure DevOps organization that you can use for this lab, create one by following the instructions available at&nbsp;<a href=\"https:\/\/exceedthecloud.com\/?p=2937\" target=\"_blank\" rel=\"noreferrer noopener\">Create an organization or project collection<\/a>.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Lab 0: Configure the lab prerequisites<\/strong><\/p>\n\n\n\n<p>In this Lab, you will set up the prerequisite for the lab, which consists of the preconfigured Parts Unlimited team project based on an Azure DevOps Demo Generator template.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Task 1: Configure the team project<\/strong><\/p>\n\n\n\n<p>In this task, you will use Azure DevOps Demo Generator to generate a new project based on the&nbsp;<strong>Parts Unlimited<\/strong>&nbsp;template.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On your lab computer, start a web browser and navigate to&nbsp;<a href=\"https:\/\/azuredevopsdemogenerator.azurewebsites.net\/\" target=\"_blank\" rel=\"noreferrer noopener\">Azure DevOps Demo Generator<\/a>. This utility site will automate the process of creating a new Azure DevOps project within your account that is prepopulated with content (work items, repos, etc.) required for the lab.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: For more information on the site, see https:\/\/docs.microsoft.com\/en-us\/azure\/devops\/demo-gen.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"2\"><li>Click&nbsp;<strong>Sign in<\/strong>&nbsp;and sign in using the Microsoft account associated with your Azure DevOps subscription.<\/li><li>If required, on the&nbsp;<strong>Azure DevOps Demo Generator<\/strong>&nbsp;page, click&nbsp;<strong>Accept<\/strong>&nbsp;to accept the permission requests for accessing your Azure DevOps subscription.<\/li><li>On the&nbsp;<strong>Create New Project<\/strong>&nbsp;page, in the&nbsp;<strong>New Project Name<\/strong>&nbsp;textbox, type&nbsp;<strong>Enabling Continuous Integration with Azure Pipelines<\/strong>, in the&nbsp;<strong>Select organization<\/strong>&nbsp;dropdown list, select your Azure DevOps organization, and then click&nbsp;<strong>Choose template<\/strong>.<\/li><li>In the list of templates, locate the&nbsp;<strong>PartsUnlimited<\/strong>&nbsp;template and click&nbsp;<strong>Select Template<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"287\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture1-5.png\" alt=\"\" class=\"wp-image-3081\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture1-5.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture1-5-300x138.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p>Back on the&nbsp;<strong>Create New Project<\/strong>&nbsp;page, click&nbsp;<strong>Create Project<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"325\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture2-5.png\" alt=\"\" class=\"wp-image-3082\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture2-5.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture2-5-300x156.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: Wait for the process to complete. This should take about 2 minutes. In case the process fails, navigate to your DevOps organization, delete the project, and try again.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>Create New Project<\/strong>&nbsp;page, click&nbsp;<strong>Navigate to project<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"367\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture3-5.png\" alt=\"\" class=\"wp-image-3083\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture3-5.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture3-5-300x176.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Lab 1: Introduction to Azure DevOps Build<\/strong><\/p>\n\n\n\n<p>In this Lab, you will create a basic build pipeline from a template, track and review the new build job, and trigger a continuous integration build.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Task 1: Creating a basic build pipeline from a template<\/strong><\/p>\n\n\n\n<p>In this task, you will create and configure a build pipeline by using a predefined template.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the web browser displaying your Azure DevOps organization with the&nbsp;<strong>Enabling Continuous Integration with Azure Pipelines<\/strong>&nbsp;project you generated in the previous Lab, in the vertical navigational pane, select the&nbsp;<strong>Pipelines<\/strong>&nbsp;section and ensure that the&nbsp;<strong>Pipelines<\/strong>&nbsp;view is displayed.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: Alternatively, you can access the project page directly by navigating to the [https:\/\/dev.azure.com\/&lt;your-Azure-DevOps-account-name&gt;\/Enabling%20Continuous%20Integration%20with%20Azure%20Pipelines) URL, where the&nbsp;&lt;your-Azure-DevOps-account-name&gt;&nbsp;placeholder, represents your account name.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"2\"><li>On the&nbsp;<strong>Pipelines<\/strong>&nbsp;pane, hover the mouse pointer over the entry representing the existing&nbsp;<strong>PartsUnlimitedE2E<\/strong>&nbsp;pipeline to reveal the ellipsis symbol on the right side.<\/li><li>Click the ellipsis and, in the dropdown menu, click&nbsp;<strong>Edit<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"275\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture4-5.png\" alt=\"\" class=\"wp-image-3084\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture4-5.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture4-5-300x132.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Note<\/strong>: In order to avoid two pipelines being triggered later in the lab, start by disabling the CI trigger for the pipeline created by the template.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>Tasks<\/strong>&nbsp;tab of the&nbsp;<strong>PartsUnlimitedE2E<\/strong>&nbsp;pane, click the&nbsp;<strong>Triggers<\/strong>&nbsp;tab, clear the checkbox&nbsp;<strong>Enable continuous integration<\/strong>, click&nbsp;<strong>Save &amp; queue<\/strong>&nbsp;and then click&nbsp;<strong>Save<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"295\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture5-5.png\" alt=\"\" class=\"wp-image-3085\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture5-5.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture5-5-300x142.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>To create a new pipeline, navigate back to the&nbsp;<strong>Pipelines<\/strong>&nbsp;view by selecting&nbsp;<strong>Pipelines<\/strong>&nbsp;in the vertical navigational pane in the Azure DevOps portal.<\/li><li>Back on the&nbsp;<strong>Pipelines<\/strong>&nbsp;pane, click&nbsp;<strong>New pipeline<\/strong>&nbsp;to create a new build pipeline.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"175\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture6-5.png\" alt=\"\" class=\"wp-image-3086\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture6-5.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture6-5-300x84.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: The default option for build pipelines involves the use of YAML. For this lab, you will use the classic editor.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>Where is your code&gt;?<\/strong>&nbsp;pane, click the&nbsp;<strong>Use the classic editor<\/strong>&nbsp;link at the bottom of the page.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"568\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture7-5.png\" alt=\"\" class=\"wp-image-3087\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture7-5.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture7-5-300x273.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: You need to start by configuring the source repository. Every major platform is available, but the default options are all we need here. This build will use the&nbsp;<strong>master<\/strong>&nbsp;branch of the&nbsp;<strong>PartsUnlimited<\/strong>&nbsp;repo.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Ensure that the&nbsp;<strong>Azure Repos Git<\/strong>&nbsp;option with the&nbsp;<strong>PartsUnlimited<\/strong>&nbsp;repository and&nbsp;<strong>master<\/strong>&nbsp;branch entries are selected, and click&nbsp;<strong>Continue<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"517\" height=\"608\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture8-5.png\" alt=\"\" class=\"wp-image-3088\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture8-5.png 517w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture8-5-255x300.png 255w\" sizes=\"auto, (max-width: 517px) 100vw, 517px\" \/><\/figure>\n\n\n\n<p>On the&nbsp;<strong>Choose a template<\/strong>&nbsp;pane, in the&nbsp;<strong>Search<\/strong>&nbsp;text box, type&nbsp;<strong>ASP.NET<\/strong>, in the list of results, select the&nbsp;<strong>ASP.NET<\/strong>&nbsp;template and click&nbsp;<strong>Apply<\/strong>&nbsp;to apply this template to the build definition.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"591\" height=\"810\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture9-5.png\" alt=\"\" class=\"wp-image-3089\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture9-5.png 591w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture9-5-219x300.png 219w\" sizes=\"auto, (max-width: 591px) 100vw, 591px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Note<\/strong>: Note that there are many options that should cover all of our mainstream scenarios. For our purposes here, we\u2019ll just build the project using the baseline ASP.NET template. The process for this build pipeline is easy to follow. After getting the source, Azure DevOps will use NuGet to restore any dependent packages. Then, the project will be built and tested. The results will then be published to the configured target.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>Tasks<\/strong>&nbsp;tab, look for&nbsp;<strong>test Assemblies<\/strong>&nbsp;task, right-click and&nbsp;<strong>disable selected task(s)<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"465\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture10-5.png\" alt=\"\" class=\"wp-image-3090\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture10-5.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture10-5-300x224.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Select the&nbsp;<strong>Variables<\/strong>&nbsp;tab and review its content.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: Here you can configure special parameters to be used during the build, such as the configuration or platform.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"2\"><li>Select the&nbsp;<strong>Triggers<\/strong>&nbsp;tab and check the&nbsp;<strong>Enable continuous integration<\/strong>&nbsp;checkbox.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"306\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture11-5.png\" alt=\"\" class=\"wp-image-3091\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture11-5.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture11-5-300x147.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: This automatically invokes the build whenever source changes are committed. Triggers allow you to automatically invoke builds on a schedule, when another build completes, or when changes are made to the source.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Select the&nbsp;<strong>Options<\/strong>&nbsp;tab and review its content.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: This section includes a wide variety of options related to the build workflow. Note that you\u2019ll generally configure options for specific build tasks on the configuration views of the tasks themselves.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"2\"><li>Select the&nbsp;<strong>History<\/strong>&nbsp;tab.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: At this point, the tab does not contain any entries, but it will show a history of changes you make to the build definition.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"3\"><li>Select the&nbsp;<strong>Save &amp; Queue<\/strong>&nbsp;tab header and, in the dropdown menu, select&nbsp;<strong>Save &amp; Queue<\/strong>&nbsp;entry to save and queue a new build.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: You can define the retention time for pipeline artifacts from&nbsp;<strong>Project Settings<\/strong>&nbsp;&gt;&nbsp;<strong>Settings<\/strong>&nbsp;&gt;&nbsp;<strong>Retention policy<\/strong>. These settings enable you to configure which pipeline runs are retained and for how long.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\" start=\"4\"><li>In the&nbsp;<strong>Run pipeline<\/strong>&nbsp;pane, accept the default options and click&nbsp;<strong>Save and run<\/strong>. This will automatically display the&nbsp;<strong>Summary<\/strong>&nbsp;tab of the pipeline run job, with the&nbsp;<strong>Queued<\/strong>&nbsp;status.<\/li><\/ul>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"468\" height=\"834\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture12-5.png\" alt=\"\" class=\"wp-image-3092\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture12-5.png 468w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture12-5-168x300.png 168w\" sizes=\"auto, (max-width: 468px) 100vw, 468px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Task 2: Tracking and reviewing a build<\/strong><\/p>\n\n\n\n<p>In this task, you will track and review the new build job.<\/p>\n\n\n\n<p><strong>Note<\/strong>: Once the build begins, you\u2019ll be able to track the console output per task.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>On the&nbsp;<strong>Summary<\/strong>&nbsp;tab of the pipeline run job, in the&nbsp;<strong>Jobs<\/strong>&nbsp;section, click&nbsp;<strong>Agent job 1<\/strong>. This will display the details pane of the job.<\/li><\/ul>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"368\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture13-4.png\" alt=\"\" class=\"wp-image-3093\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture13-4.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture13-4-300x177.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Note<\/strong>: If you want to review an earlier task, you can scroll the right pane to review its logs.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Once the build completes successfully, on the job details pane, click the left-facing arrow to return to the summary view.<\/li><\/ul>\n\n\n\n<p><strong>Note<\/strong>: The summary view provides overview details about the build, including details about commits, tests, and artifacts.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Task 3: Invoking a continuous integration build<\/strong><\/p>\n\n\n\n<p>In this task, you will trigger a continuous integration build.<\/p>\n\n\n\n<p><strong>Note<\/strong>: In the first task of this Lab, you configured the build to support continuous integration. In this task, you will test its functionality.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the web browser window displaying your project settings in the Azure DevOps portal, in the vertical navigational pane, select the&nbsp;<strong>Repos<\/strong>&nbsp;section and ensure that the&nbsp;<strong>Files<\/strong>&nbsp;view is displayed.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"235\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture14-3.png\" alt=\"\" class=\"wp-image-3094\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture14-3.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture14-3-300x113.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the middle pane, navigate to the file&nbsp;<strong>PartsUnlimited-aspnet45\/src\/PartsUnlimitedWebsite\/Views\/Home\/Index.cshtml<\/strong>&nbsp;and select it.<\/li><li>On the&nbsp;<strong>Index.cshtml<\/strong>&nbsp;pane, click&nbsp;<strong>Edit<\/strong>.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"525\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture15-3.png\" alt=\"\" class=\"wp-image-3095\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture15-3.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture15-3-300x252.png 300w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p>On the&nbsp;<strong>Index.cshtml<\/strong>&nbsp;pane, make a minor update by changing the line&nbsp;ViewBag.Title = &#8220;Home Page&#8221;;&nbsp;to&nbsp;ViewBag.Title = &#8220;Lab Project Home Page&#8221;;&nbsp;and click&nbsp;<strong>Commit<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"741\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture16-3.png\" alt=\"\" class=\"wp-image-3096\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture16-3.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture16-3-253x300.png 253w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p>On the&nbsp;<strong>Commit<\/strong>&nbsp;pane, accept the default commit details and click&nbsp;<strong>Commit<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"465\" height=\"831\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture17-3.png\" alt=\"\" class=\"wp-image-3097\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture17-3.png 465w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture17-3-168x300.png 168w\" sizes=\"auto, (max-width: 465px) 100vw, 465px\" \/><\/figure>\n\n\n\n<p><strong>Note<\/strong>: This will automatically trigger a build.<\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>In the vertical navigational pane, select the&nbsp;<strong>Pipelines<\/strong>&nbsp;section and ensure that the&nbsp;<strong>Pipelines<\/strong>&nbsp;view is displayed.<\/li><li>On the&nbsp;<strong>Pipelines<\/strong>&nbsp;pane, verify that it contains the entry representing a new build (note that its number contains the trailing which was triggered by your change.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"624\" height=\"389\" src=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture18-3.png\" alt=\"\" class=\"wp-image-3098\" srcset=\"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture18-3.png 624w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture18-3-300x187.png 300w, https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/Picture18-3-80x50.png 80w\" sizes=\"auto, (max-width: 624px) 100vw, 624px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\" type=\"1\"><li>Click the build entry to display its details and verify that it completed successfully.<\/li><\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>Review<\/strong><\/p>\n\n\n\n<p>In this lab, you used the Azure DevOps portal to create a basic build pipeline from a template, to track and review a build, and to invoke a continuous integration build.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this lab, you will learn how to configure continuous integration (CI) and continuous deployment (CD) for your applications using Build and Release in Azure Pipelines. This scriptable CI\/CD system is both web-based and cross-platform, while also providing a modern &hellip; <a href=\"https:\/\/exceedthecloud.com\/?p=3080\">Continued<\/a><\/p>\n","protected":false},"author":1,"featured_media":3131,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"kt_blocks_editor_width":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[16,4],"tags":[8,109,105,107],"class_list":["post-3080","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","category-practical-labs-series","tag-azure","tag-ci-cd","tag-devops","tag-pipelines"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/exceedthecloud.com\/wp-content\/uploads\/2022\/04\/istockphoto-524086145-612x612-1.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/posts\/3080","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3080"}],"version-history":[{"count":2,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/posts\/3080\/revisions"}],"predecessor-version":[{"id":3132,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/posts\/3080\/revisions\/3132"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=\/wp\/v2\/media\/3131"}],"wp:attachment":[{"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3080"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3080"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/exceedthecloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3080"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}