Hello, my name is Stephen Burnley and in these lessons you will learn about continuous integration. The first part of setting up continuous integration or automated builds is to learn how to build pipelines. Pipelines is a terminology that refers to the job that will run on the particular build machine. This will include checking out code, doing the appropriate compile of the code, downloading appropriate packages from the internet, and being able to create the appropriate binary that can be installed. Azure Pipelines also can integrate with additional external code repositories such as GitHub or Bitbucket. This allows you to continue to use Azure DevOps even if your source code does not reside in the Azure repo. Pipelines in the Azure DevOps environment also allow you to run the appropriate software builds on the Linux, Mac, or Windows operating systems. This allows developers to continue to use the build machine configurations and preferred code platform regardless of the technologies used in the Azure DevOps portal. This flexibility allows vendors of all different development types to deploy their applications to the Azure Cloud. There is also significant support for container-based builds. containers are a modern way to package your software applications, and Azure has made significant improvements in both the builds, deployments, and monitoring of container or Kubernetes-based applications. This is especially important for container applications because they are usually comprised of multiple projects that need to be compiled and deployed, and it can be difficult to monitor and manage large projects. Therefore, there are significant monitoring tools so that you can track the status of all the builds for your various software dependencies. Here at the DevOps portal, you can see we have a sample application deployed called Parts Unlimited. Let's select that now. In the Parts Unlimited project on the left-hand side of the screen, you will notice the components of the Azure DevOps portal. This includes Azure Boards for requirements management as your repos to hold the source code for this particular application, and then the concept of building pipelines. Let's take a look at the Azure repo to look at the source code that we are about to compile. Here in the Azure repo, you can see the code base related to the Parts Unlimited application. The name of the project is Parts Unlimited-ASPNET 4.5. This implies that this is a .NET 4.5 application. Let's expand this to take a look at the projects that are included. If we expand the Parts Unlimited project, you will see there is a folder called SRC. This implies that this is the folder with the source code that needs to be compiled. Let's expand the SRC folder. Now you can see that the Parts Unlimited application is a website. The goal of this continuous integration pipeline will be to check out the latest version of this code, compile that code, and prepare that for installation in the Azure cloud. Let's select the Parts Unlimited website to take a look at how it's built. Here in the Parts Unlimited website, we can see all of the assets related to the web application, including the files that need to execute, images that need to be included on the pages, and then the appropriate navigation and configuration files. Now let's take a look at what a continuous integration pipeline would look like if it is to attach to this source code and compile it. In order to view the pipeline setup in this project, we will click Pipelines on the left hand side menu. Here we can see that there is a sample pipeline created as part of this Parts Unlimited project. Let's take a look at some of the configuration information for this particular project. Here you can see the Parts Unlimited E2E continuous integration pipeline. This is made specifically to build the software application. Continuous integration pipelines do not install software applications on servers. That is called continuous delivery, which is typically abbreviated CD, and is beyond the scope of the continuous integration pipelines. The continuous integration pipelines will need to attach to the source code, check it out, compile it, and then place that compiled artifact in some sort of staging location in preparation for being deployed. Here you can see that we can view the history of the runs, but there is an Edit button up at the top of the screen. Let's click Edit so we can take a look at how this pipeline was built. Here in the Edit screen you can see the tabs across the top of the screen, which are the configuration options for this particular pipeline. Let's take a look at some of the basics. The first thing that you can see when pipeline is selected is on the right hand side of the screen the pipeline is given a name, Parts Unlimited E2E. Then you can see we have the concept of as your pipelines is the Agent Pool. Agent Pool is where you decide which specific build virtual machines will process your compile of your application. The continuous integration process must run on a computer because it does require the checkout and compile process. Therefore, by selecting Azure Pipelines for your agent pool, you are asking for a generic build machine that is provided by Microsoft Azure to perform the compile of your application. You can see here that the Agent specification is a Windows 2019 server. This server will have the appropriate build tools for Microsoft development applications as well as build tools for other vendors. These generic build machines work in most scenarios. However, you may have custom applications that need to be compiled or configured with special build virtual machines. If this is true, you will be able to specify an alternative build computer here in the Agent Pool. The next thing that has to be configured as part of the pipeline is Get Sources. This is where we attach to a specific repository and a specific branch of that repository. This is how your continuous integration pipeline knows what to execute and where to get the code from. You can also see in this particular case that we have chosen to look at the Azure Repos for our source code. You can notice from the icons at the top of the screen that there are many other external vendors that the Azure Continuous Integration Pipelines can access. Next you can see the Compile Steps. If we select Nougat Restore, this is a requirement for .NET applications for your continuous integration build machine to go to the Internet to download and retrieve software dependencies for your application. This would include any sort of frameworks or external reusable code modules that your development team has decided to use. Examples could be menu systems or database APIs. These packages need to be downloaded from the Microsoft Nougat server. That is the first step in this build process. The next thing that happens with this pipeline is it uses Visual Studio on the Build Agent to compile the particular solution using the build arguments specified in the box in the middle of the screen. This allows you to continue to build applications the same way that developers may be doing this on their local machines. Next you can see the requirement to copy files to the appropriate staging directory. This means that all of the compiled outputs from the previous steps will be stored in a directory prepared for a CD or continuous delivery process to run in the future. Finally, you can see that those applications that are ready to be deployed are dropped in a folder called Drop on the Artifacts staging server. This now means that this package has been downloaded from your source code repository compiled and is ready for a CD delivery process. At the top of the screen you can also see options for Variables and Triggers. Variables allow the developer who is running this pipeline to change some of the parameters or values in preparation for execution. This could allow you to change things such as the particular release from debug to build. You can also see the triggers option which allows you to determine when this particular continuous integration pipeline should run. By checking the box for continuous integration you are enabling automation so that every time the underlying source code changes you are asking Azure DevOps to run the pipeline. Stay tuned for the next lesson where we will learn how to build continuous integration pipelines using the two editors in the Azure DevOps portal. Thanks for watching.