Azure App Services Continuous Delivery

We are continuously working on improving and simplifying the deployment experience to Azure from Visual Studio Team Services. As a part of that effort, we are excited to announce preview of the Continuous Delivery feature we have added for App Services in the Azure portal.

Continuous Delivery simplifies setting up a robust deployment pipeline, you can setup a pipeline right from the Azure portal that builds, runs tests, and deploys to staging slot and then to production for every code commit/batch of code commits.

Later, you can easily extend this deployment automation to handle any other operations your application nee ds to do during deployment. For example, provision additional Azure resources, run custom scripts, or upgrading database. You can even choose to deploy automatically or setup manual approval for any deployment going to production.

You can start using this feature by navigating to your app’s menu blade in the Azure portal and clicking on APP DEPLOYMENT > Continuous Delivery (Preview).

azure-cd-entry-point

Setting up continuous delivery is a four-step wizard. In the first two steps, we ask you to choose the source code repository and fill in the framework details. This helps us build and package the application for deployment. Currently we are supporting Visual Studio Team Services and Github as source repositories and we have plans to expand this list. Similarly on the application types we are starting with ASP.NET and ASP.NET core and we will enhance to other web applications as well.

azure-cd-source-blade

The last two steps are optional and you can choose to opt in for setting up a load test and staging environment.

If you choose to setup a load test environment we will create a new Azure App Service (you can also choose an existing App Service) and setup a load test with 25 virtual users concurrently accessing the Azure App Service for a duration of 60 seconds.

Similarly, if you opted in for setting up a staging environment then we will publish your latest changes first to staging slot and then promote to production. You can either choose an existing Azure App Service slot or create a new one.

Azure CD Deploy Blade

As a part of the Continuous Delivery setup The following sequence of events occurs:

  • Azure Continuous Delivery creates a build and a release definition in the Team Services account you specified, together with a service endpoint to connect to Azure.
  • If you chose to create a new Azure App Service instance for load tests, and/or a new slot for staging, these are created in your Azure subscription.
  • After setup has completed successfully, a build is triggered that builds and packages the application for deployment.
  • After the build has completed successfully, a new release is created and the deployment triggered.
  • If you chose to include a load test, the latest changes are first deployed to the Azure App Service you selected, and then the load test is executed after the deployment succeeds.
  • If you chose to use a staging slot, the latest changes are deployed to the staging slot and then a slot swap is performed to complete the continuous delivery workflow.

After all these actions have completed, the Azure portal shows the logs.

azure-cd-deploy-status

In the “Successfully set up Continuous Delivery…” item, choose the Build Definition link to open the project containing your app in Team Services, and see the summary for the build definition. Choose Edit to see the tasks that have been added and configured.

You can verify that continuous deployment is occurring from the repository containing your app by pushing a change to the repository. Your app should update to reflect the changes shortly after the push to the repository completes.

Refer to documentation to learn more about Continuous Delivery to Azure App Services.

Try out Release Management in Visual Studio Team Services.

For any questions, comments and feedback – please reach out to Gopinath.ch AT microsoft DOT com.

Thanks

Gopinath

Release Management Team

Twitter: @gopinach