 Hi, my name is Abel and I'm a Senior Cloud Developer Advocate specializing in DevOps. I am so excited to show you what's new in Azure DevOps. We've always said Azure DevOps is everything you need to take an idea and turn that idea into a working piece of software in the hands of your end users for any language, targeting any platform and now we've made it even better. The name of the game has been all about integrating with GitHub. So let's go check it out. All right. So here you can see Azure Boards, where you can track any unit of work in your software project. Now, wouldn't it be cool if we could link Azure Boards up with our GitHub Repos? Well, guess what? Now you can and it's as easy as this. If you want to set up that linkage, let's first go into our project settings and from here, we're going to do some integrations with our boards. Now, the first thing it's going to ask you is, which GitHub repo do you want to integrate with? Now, I'm going to go ahead and use my personal access token to connect up to my GitHub repo and let's see if I can remember my token. I think it's that and let's go ahead and authorize that. Now it's going to ask me which repo do you want to connect to. So let's go ahead and connect up to my able tailwind front end. So we'll select that, we'll save it, and that is all we need to do to connect up Azure Boards with my GitHub repo. So let's jump back to our Boards and you can see my Kanban Boards. All right. So notice I have this super-duper important bug that needs to be fixed immediately, right? So it sure would be cool if the changes that I did inside my GitHub repo would automatically link to this work item, so I could track all of my work and you totally can now because we linked up our Azure Boards with GitHub. So let me show you what I mean. Let's jump into GitHub and make a change. So here's a demo comment and we'll go ahead and save this. When we save this, we'll go ahead and create a branch to start a pull request. So we'll go ahead and create a new branch and we do need to leave a good comment. So let's leave a comment that say this fixes Azure bug number, and what number was that? I think it was 64. Now, let's go ahead and create that branch for myself to fix. So what am I doing? I've now created a branch with my code fixes, now it's ready to start my pull request. Now if I jump back into my Azure Boards, check this out. If we look at the details, don't don't don't, bam, there's a change that I just did inside of GitHub. If I click on this, this is a deep link that will take me directly inside of GitHub to see what branch it's in as well as what my changes are. So now let's go ahead and jump back into GitHub, because what we want to do is we want to create a pull request. So let's go ahead and create a pull request. So now my teammates can review my code changes to make sure everything that I'm doing looks good. Now let's jump back into Azure Boards again, because if we look at the development details, check this out. Here is where we initiate the pull requests. So everything that we do inside of GitHub is now tracked inside of Azure Boards, pretty cool, huh? The only thing left that we need to do is go ahead and finish this particular pull request. So we'll come in here, let's merge the pull request into master. So now we've finished up that particular pull request and bam. Did you see that just happen automatically? The bug, because we resolved it inside of GitHub, it automatically resolved on our work item board as well. This right here is so incredibly cool. GitHub issues, they work great. But if your project gets a little bit more complex, having the power and the flexibility of Azure Boards, it's awesome. Now with the GitHub repo and Azure Boards linkage, you can use both. So great. Tracking all this work is awesome, but we still need the ability to add CICD for our repos, even for our Git repos and how we can do that super easily. Let me show you what I mean. Let's jump back into our GitHub repo. What we're going to do is create a CICD pipeline into Azure Pipelines directly from GitHub. So what we need to do is we need to go to the Marketplace, and from here we need to search for the Azure Pipelines Marketplace extension. So we'll go ahead and jump in here, we'll do a search. So this is currently already installed, so I won't go through the whole install process, but I will show you how easy it is to configure it. We'll go ahead and say, let's go ahead and configure Azure Pipelines, and it's going to ask for my password. Let me go ahead and enter that in. Now it's going to come in here and we're going to say, you know what, let's go ahead and add a CICD pipeline for my specific repository. We'll go ahead and save that, and now it's going to route me back into Azure DevOps and it's going to ask me to login. So let me login with my credentials, and now it's going to ask me which organization do you want to use. Now I have a million organizations that I'm in, hopefully you guys don't have nearly as many as I do, so it'll be easier to find. But let me find my demo account. So it's going to be called Azure DevOps demo A, and the project is going to be my Connect 2018 project, and we'll go ahead and continue, and now it's going to walk me through a wizard to create for me my build pipeline. So we'll go ahead and choose my GitHub repo, and notice it analyzed my repo and it figured out what technologies is being used inside of that repo. This repo is holding a Node.js app, so it's going to provide for me a Node.js template that I can just start using, and immediately it creates me a build pipeline written in YAML. This is pipeline as code. So as a DevOps person, this makes me super excited because I can check this file in, and now any changes I make to it to the build pipeline, it will be version right alongside my code. If you need more information about it, we have a handy link that will take you directly to the docs pages as well. So here you can find everything that you need. All right. So let's go ahead and jump back into our build pipeline. We'll go ahead and save, and we'll run this. So we'll save it, and we'll run it, and so what is it doing right now? It's taking this YAML file, and it's taking this particular YAML file and saving it in my GitHub repo. Now after it saved it to my GitHub repo, it's going to kick off the build, and the very first thing it's going to do is it's going to go to GitHub and download all of my source code, including this YAML file. It will then load this build up and start executing all the build steps described in the YAML file. This right here, like I said before, as a DevOps person, this makes me ridiculously happy. Pipeline as code. So this build system right here, this is no different than the visual editor that we used to use before. In fact, it's still around, and you can still use it. It's the exact same build engine underneath doing the exact same thing. It's just a task runner doing one task after another, but with the YAML build, it describes it using a YAML file instead of using the visual editor. Let me show you what that visual editor actually looks like. So here's my build, and I created a build, a custom build that uses this particular editor, the visual editor, and you'll notice it does one task after another, after another, after another. So customizing a build is super simple with Azure DevOps because this right here is a task runner, just does one task after another. So if you want to customize this, all you would need to do is add or remove tasks. Now out of the box, there are hundreds of tasks that you can just download and start using. But if you wanna do something that doesn't exist out of the box, go to the marketplace. In the marketplace, our partners have created over 500 build and release tasks that you can just download and start using. Pretty cool. And if what you wanna do doesn't exist out of the box and doesn't exist in the marketplace, you can write your own custom tasks as well. Custom tasks, nothing more than PowerShell or Node.js. So what that means is anything that you can do from the command line, you can easily get this build and release system to do as well. All right, so now if we go ahead and look at our build, it should be finished and that's great, right? It's a pretty rudimentary build. It doesn't do a whole lot. It just kind of packages everything up. But what I really wanna do is I want to customize that build YAML file, right? I wanna make it do exactly what this visual build is doing. I want it to install NPM. I need to set up my database connections. I then want to build my app. This is a Node.js app that we compile into static webpages. And then I wanna take all those up, bundle it up as a zip file so that it's ready to be deployed. And check this out. If you have a visual editor, you can just say view as YAML and it'll take this visual build and create all the YAML steps for you where you can copy and just make those changes. So let's jump into the build YAML file to make those changes. So let me jump in here. Let's pull our changes down from our repo and now check this out. Here's our asherpipelines.yaml file and here's what's in the repo right now. If we wanna make changes, guess what? We can just go ahead and start making changes. All right, so let's customize this and let's add a new task and notice we're getting autocomplete and we're getting syntax highlighting and if we do a control space we'll actually even get IntelliSense. So this right here makes editing the YAML file so much easier. We have an asherpipelines VS code extension that gives us IntelliSense, syntax highlighting and autocomplete. So if we're gonna add a new task, let's do something like, I don't know, maybe we'll add a new get task and we can do the inputs and we can see what the input can be. And notice it even gives us red highlights or red scriggles. So this is fantastic. IntelliSense, syntax highlighting and autocomplete makes editing these YAML files so much easier. All right, so what I wanted to do is I really wanted to customize this with all of my steps above. So here is all we need to do. Let me paste that in here and we'll go ahead and save this and we'll upload that code and we'll commit it and what did we do? We customize our build and let's push those changes back into GitHub. Now as soon as my code hits GitHub, it should kick off my build. So let's go ahead and jump back into Azure Pipelines to see if the build has been kicked off and there we go. We customize the build and it's kicking off the build. So what is this doing right now? This build is gonna go ahead and download the latest source code from GitHub, including the build.yaml file. Now it's gonna load that yaml file up and it's gonna execute the build steps described in that build.yaml file. Oh, this is awesome. So it's gonna go ahead, it's gonna get my sources, it's gonna install npm, it's gonna set up my database connections, it's gonna go ahead and build my app, turn my Node.js app into a static set of files and it's gonna archive all of that so now it'll be ready to be deployed all the way out into production. All right, looks like the build is finished. If we jump into a summary, we get a nice summary page that shows everything that's happened during the build but notice we haven't created a release pipeline yet. All right, so let's go ahead and create our release. I'll click on the release button and what this will do is it will take us to our visual editor. Now the very first thing it's gonna ask us is do we want to apply a template which makes our job so much easier. Now for this demo, I'm gonna go ahead and deploy my code into Azure App Service so I'll just use the app service template. Now the way you set up these releases is first you describe what your stage is gonna be. So my first stage is gonna be for my staging environment so we'll name it staging and after we define what the environment is gonna be we can go ahead and go into that particular staging environment and now we'll describe all the steps that we need to take to deploy our application into this particular stage. Now since I'm just deploying an Azure App Service it becomes super simple, it's one task. So the first thing I'm gonna do is I'm gonna pick my subscription. Here's my Azure subscription and after I pick my subscription let's go ahead and deploy this into the correct app service. So let me bring up the list of app services and from here we'll go ahead and deploy this into my staging environment which is right here. And that's literally all we need to do. We can jump back into our pipeline because we've just described one environment. You've described your environment you wanna deploy to, you describe what tasks that you wanna use to deploy your application and now you get to define who are the approvers. So before and after each environment you can add a set of manual approvers. So I'll go ahead and add myself as an approver and you can add a list of people where every single person in the list has to approve before it can flow through the gate or you can add a group of people where if one person approves then it'll flow through the gate or you can use a combination of lists and groups as well. So I have a staging environment, I do need to have my production environment so let me just go ahead and clone that and let's describe this correctly so we'll call this my prod environment and we have to go in and update the tasks that we're gonna use to deploy my application into my environment. So instead of deploying this into staging let's deploy this into my production environment. So of course some of you are probably asking what do I need to do if I need to customize my deployment and do special tasks? Well guess what? This right here is just a task runner exactly like the build. So what that means is to customize it you would just add or remove tasks that you need and just like the build out of the box you get hundreds of tasks. If what you wanna do doesn't exist out of the box jump into the marketplace and if what you wanna do doesn't exist in the marketplace write your own tasks. Tasks, nothing more than Node.js or PowerShell. So anything you can do from the command line you can easily get this build and release system to do as well. So we've just completed this let's go ahead and save this and let's go ahead and kick off our release to see what that will look like. So we'll come into our pipeline let's go ahead and create a release and so now what is it gonna do? It's gonna grab the latest build that we have and take those bits and start releasing it through our dev environment and it will go ahead and execute the steps that we picked. So here it is, queued everything up and now it's gonna go ahead and deploy my application into my staging environment. And hooray for that. Looks like we just deployed into our staging environment. Let's jump into our staging environment refresh that to make sure we deployed and voila. Here's our code deployed into staging, fantastic. So we can go ahead and approve this. Looks good in staging and after approving it now it's gonna go ahead and flow into our production environment. And there you go. There's our app deployed all the way into the production environment. So as you can see creating a full CI CD pipeline that will take your code from GitHub and deploy it all the way out into production super simple to do. So there you go. Azure DevOps. We are the only cloud vendor that makes it so simple to go from nothing to a full CI CD pipeline for any language targeting any platform. And yes, this is for your code sitting in your repository of choice deploying to wherever you need it to be deployed. Of course it can be Azure and man we've made it so simple to deploy to Azure but it can also just as easily be behind your firewall in front of your firewall. 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 what's that Donovan all that says? Go rub some DevOps on it. No man. All you devs out there go to dev.azure.com and let's drop a bucket loaded DevOps over all of this using Azure DevOps. Thank you.