 Hi, my name is Abel and I'm a senior Cloud Developer Advocate specializing in DevOps. Today, I'm going to show you the ultimate DevOps tool for creating your own CI CD pipelines for any language targeting any platform. I'm going to be showing you Azure Pipelines. With Azure Pipelines, we've made it ridiculously simple to go from nothing at all to a new Azure Pipelines project. See, people have been telling us it's too complicated to get started with your DevOps tools, and guess what? We listen. So let's go check this out. Let's say your code is sitting somewhere like on GitHub, and you don't have an Azure DevOps account, and now you want to create a CI CD pipeline. Well, just go to this landing page, click on Start Free with Pipelines, and it's going to create for you your own organization, where now all you have to do is jump in here, type in your project name, click Create, and bam, that is all you need to do. Now, when it's done creating the project, you'll have an empty Azure Pipeline project like this. So let's go ahead and create our first pipeline. So we'll jump into our Pipelines, and we'll go ahead and create a brand new one, and the very first thing it asks you is, where is your code? Is it up in GitHub? Is it in an Azure Repos? We also support TFVC and Bitbucket Cloud, but for those, you have to use the Visual Designer. Now, my code is sitting out in GitHub, so let me go ahead and authorize with GitHub. Once it's done authorizing with GitHub, I'll be able to see all of my private Repos and public Repos out in my GitHub account. So let me choose my repo, and now it's going to go and analyze the code and the technology used inside my repo. Based on what it sees, it's going to offer me a couple of templates. It just so happens, my application is an ASP.NET app. But if my repo held, let's say, Node.js app running in a Docker container, guess what? It will create for me a build pipeline that makes sense for the technologies that we picked. All right. So now it's going to create for me my pipeline using a YAML file. Now, I'm going to go ahead and add a couple more tasks. Basically, the tasks that I'm going to add, I'm just going to go ahead and copy my zip file that's created and take my build artifacts and publish them back up to Azure Pipelines. Now, once that's done, let's go ahead and save and run this build, and voila, that is literally all we have to do, and now it's kicked off our build. So now it's going to go ahead and spin up a build agent, and it's going to go ahead and build our application for us. Now, it's going to download my code from GitHub, it's going to restore my packages from UGIT, it's going to compile everything using Visual Studio, it will go ahead and run my unit tests. This right here is just what we used to have in VSTS. Now, if you remember, we defined this build using a YAML file. If you guys like YAML files, that's freaking awesome. I love YAML files because Pipeline has code, what we're doing here, this really speaks to the DevOps in me, right? However, if you still want to define our builds, or describe our builds using the Visual Editor, you absolutely still can, and hooray for that. Looks like our build has finished. Let's go ahead and jump into the summary, where now you can see a timeline of everything that's happened during this build, including all the tests that were run. Now, notice the one thing that's missing is going to be where's my deployments? Well, there are no deployments because we haven't created a release yet. So let's go ahead and create a release for this build. I'll go ahead and click on the release link, and it will take me to the Visual Editor for the release pipeline. Now, because I'm deploying into Azure, it makes things insanely simple. Let's choose the Azure App Service deployment template, click Apply, and hooray for that. That's all we need to do. Now, when you go and create a pipeline for your releases, the first thing you have to do is you have to define your stages. So we'll call this our staging, and next you have to define what are the tasks that are going to run for this particular stage. Now, everything is filled out for us because we're using a template, but I do need to connect my accounts with my subscription. So what I'm doing right now is I'm connecting my Azure Pipelines account to my Azure subscription. Once this is done, we can go ahead and jump in here and select the App Service that we're going to be deploying to. In my case, I am deploying to Azure DevOps Launch. Now, there's one other change that I want to make because this is my staging environment, so I'm going to go ahead and deploy this into my staging slot. So first, I have to choose my resource group, then I have to come in here and choose my staging slot. Now, what if you wanted to do more than just deploy an app to Azure App Service? Well, to customize these release pipelines, what you would do is add and remove tasks. Now, out of the box, Azure Pipeline gives you about 100 tasks that you can just download and start using. Now, if what you want to do doesn't exist out of the box, it's not a big deal because go to the Marketplace. In the Marketplace, our partners have created over 700 build and release tasks that you can just download and start using. Now, if what you want to do doesn't exist in the Marketplace and doesn't exist out of the box, guess what? You can create your own custom tasks as well. Custom tasks, those are nothing more than PowerShell or Node.js. So what that means is anything you can do from the command line, you can easily get Azure Pipelines to do as well. All right. So we've created a really small pipeline. We're just deploying into one staging environment. Let's go ahead and look at this a little bit deeper because after you've created your stage and you've created the tasks that should run in your stage, you have the ability to add approvers before and after each stage. So let's go ahead and add a post-deployment approver. I'm just going to add myself, select that. You know what? Let's go ahead and clone this because I want to add a new stage. I want to add a new stage where I can deploy to my production. So we'll call this production. And from here, let's jump into the production tasks. And I do need to make a couple of changes. One of them that I need to make is instead of deploying to a slot, this is production. So I'm just going to deploy it to my app service itself. So I'll go ahead and save this now. And now let's go and release this. I'll click on Release, click Create. And just like that, I've created a release. And now the release will start flowing through our staging environment. And after I approve it, it can flow all the way out into production. Easy peasy. So there you go. Azure Pipelines for Your Code. We've made it so simple to go from nothing to a full CI CD pipeline for any language, targeting any platform. And yes, this is your code sitting in your repository of choice, deploying to wherever you need it to be deployed. It can be in Azure, of course, but it can also just as easily be behind your firewall, in front of your firewall, anywhere. Remember, any language targeting any platform. And not only that, if you have an open source project, guess what? You get all of this for free. You get 10 parallel pipelines out of the box. And if you need more, just ping us and we'll give you more. So go and check out Azure Pipelines today by going to dev.azure.com.