A website or code to Azure App Service is deployed normally via following methods:
FTP: This is manual steps to deploy a website wherein all deliverable files are copied to destination path on the web server via FTP client tools like FileZila. This is a basic way of deployment where you have to know how to deploy files to the correct directories in App Service, no version control supported for rollback when failures occur.
Web Deploy: It is a mechanism to deploy code to App service directly from Visual Studio. This tool supports diff-only deployment, database creation, transforms of connection strings, etc. Web Deploy differs from Kudu in that application binaries are built before they are deployed to Azure. Similar to FTP, no additional services are provided by App Service.
Kudu: it is a deployment engine which facilitates deployment of code to App service directly from Dropbox, One Drive, git, mercurial repositories. Kudu also provides added services when the code is committed, including version control, package restore, MSBuild, and web hooks for continuous deployment (eg. git hooks) and other automation tasks.
Kudu deployment engine supports 3 different types of deployment sources:
- Content synchronization from OneDrive and Dropbox.
- Repository-based continuous deployment from external services like GitHub, Bitbucket, and Visual Studio Team Services.
- Repository-based deployment with sync from local Git. The Git repository is “local” to your Web App instance. You can publish directly to the Web App from your local computer simply by cloning the Git repository. Once you commit and push the changes directly to the repository that is local to the Web App. On any commits, the Web App creates a new deployment and using the latest build of code.
Continuous Deployment workflow from Git repository
KUDU engine source code is available as open source. You can read more about KUDU on its wiki page. KUDU wiki.