1. Home
  2. Training Library
  3. Microsoft Azure
  4. Courses
  5. Getting Started with Azure App Service

Continuous Deployment with GitHub

Start course
1h 22m

You’ve got an idea for a great web app, or maybe you’ve already started building it. The next question is how are you going to get it out there on the Internet?

In this course, you will learn how you can quickly and easily set up a website and publish your app to the world with Azure App Service. Of course, web apps are a lot more complex and varied than just HTML pages and we will see how App Service supports a range of programming languages, frameworks, and even operating systems. We will explore features that greatly simplify application deployment and management, as well as those that will increase your app’s functionality like authentication and accessing on-premise data. App Service as with other Azure products has a raft of tools for monitoring and logging so you can make sure your app is performing optimally.

For any feedback, queries, or suggestions relating to this course, please contact us at support@cloudacademy.com.

Learning Objectives

  • Deploy apps using the Azure App Service
  • Create a web app using the Azure Portal
  • Create a web app using Visual Studio
  • Understand the configuration and diagnostic capabilities available from Azure App Service
  • Understand the advanced features of the service such as container deployment and deployment slots

Intended Audience

This is a beginner level course suited developers or anyone wanting to know how to deploy web apps to the Azure cloud.


To get the most from this course, you should have a basic understanding of the software development lifecycle, while knowing how to code would be a plus.

Course source code

.NET 5.0 demo code



Docker Hub



.NET Core 3.1 demo code






To implement a proper DevOps pipeline supporting continuous deployment, you'll need to integrate Azure App Services with a code repository. To demonstrate repository integration, I'll create a new App Services resource and deploy the code directly from a GitHub repository.

First, I'll create a new App Service resource called lorryadmin in the NewWebApp resource group. It will be .NET 5 code running on a Linux OS. The choice of operating system does affect the type of code repository you're able to use.  Here we the repository selection drop downs from a Windows hosted app service and a Linux one. Apart from the manual deployment, the main difference is Azure Repos in the Windows app service. As we'll see this isn't much of a difference as deployment functionality for Azure DevOps in App service is really just lip service and all of the pipeline setup has been moved to Azure DevOps.

I'll have the app hosted in the East US 2 region and change the SKU to free F1. I can't set up the continuous deployment at this stage, but I will configure GitHub actions once the web app has been created. The deployment settings are disabled due to the app service plan I selected. Had I stuck with the default Premium V2 plan, that option would be available, and I could specify the GitHub repository now. I won't bother with monitoring or tags and go ahead and create the resource. Once the lorryadmin app service is up and running, we can set up continuous deployment by clicking on Deployment Center under deployment.

When I select GitHub as my source, I'm automatically authorized as my Microsoft Azure and GitHub accounts are linked, and Azure App Service is an authorized application within GitHub.

If your Azure account and GitHub aren't linked, you are prompted to authorize, and it's a simple case of entering your GitHub credentials. Once authorized, Azure App Service appears in Authorized OAuth Apps under your GitHub account settings.

Then it's a case of choosing the organization, cloud academy in this case, and the repository. There is only one branch in the get-started-app-service-net5 repo, so I'll select the main branch and save the configuration. If the code repository only contained one app or project, then that would pretty much be job done. Going into the logs, we can see the creation of this build pipeline has kicked off a build and deploy action. Unfortunately, this is going to fail. I need to go over to GitHub and make a minor adjustment to the automatically generated build script.

Over in GitHub, we can look at the build action history and see the build error – "The current working directory does not contain a project or solution file." As I said, this is because we have two separate projects in sub-directories that aren't part of an overall solution. Let's go back to the code repo and fix that.

We can see the new directory .github/workflows has been added to the repository by Azure App Service, and the main_lorryadmin.yml file defining the build and deploy action. I'll edit the file specifying the sub-directory  /lorrylogadmin as the working directory for the dotnet build and publish steps. Committing this change will kick off the build process.  Going back to GitHub actions, we can view the build and deploy process in progress. This time the app is successfully built and deployed.

About the Author
Learning Paths

Hallam is a software architect with over 20 years experience across a wide range of industries. He began his software career as a  Delphi/Interbase disciple but changed his allegiance to Microsoft with its deep and broad ecosystem. While Hallam has designed and crafted custom software utilizing web, mobile and desktop technologies, good quality reliable data is the key to a successful solution. The challenge of quickly turning data into useful information for digestion by humans and machines has led Hallam to specialize in database design and process automation. Showing customers how leverage new technology to change and improve their business processes is one of the key drivers keeping Hallam coming back to the keyboard.