Continuous Delivery Tools adds support for Containers

Last week at //BUILD, the Continuous Delivery Tools for Visual Studio shipped a new update. As always we are continuing to expand the extension’s set of features guided by your feedback. The enthusiasm and feedback has validated just how much opportunity there is to help you continuously deliver value to your users. Apart from bug fixes, our latest update includes support for configuring a continuous delivery pipeline for solutions with Docker Compose to Azure App Service on Linux and Azure Service Fabric Cluster. We also introduced a new feature to help you improve your code quality. On code commit, we now remind you of any code analysis issues that have not been addressed yet. Clicking on the error indicator will take you to the error list. This means you can take care of those issues before they propagate into your team’s CI/CD process, and commit with confidence. Click here for another blog with more details about that feature.

Configuring Continuous Delivery to App Service on Linux

As we continue to expand support for container enabled solutions, you can now configure build and release definitions directly from within the IDE. With support for ASP.NET core and containers, Azure App Service on Linux is a solid viable environment for developers to get started with containers.

To configure continuous delivery to App Service on Linux, create or open an existing solution with an ASP.NET Core project. Add Docker support to the project and ensure that the solution is under version control on VSTS or GitHub. Right click on the solution in Solution Explorer and select Configure Continuous Delivery.

Continuous Delivery Tools Right click on solution in Solution Explorer

Then, select App Service (Linux) as the Target Host type and an Azure App Service to act as a target for continuous delivery.

Configure Continuous Delivery Tools to App Service Linux

To ensure a successful CI build, update the .dockerignore file in the ASP.NET Core project to remove the “*” entry. You also need to update the docker file in the ASP.NET project to copy the required assets to the publish folder and update the correct entry point for the application assembly:

FROM microsoft/aspnetcore-build:1.0-1.1

EXPOSE 80

WORKDIR /app

COPY . .

RUN /bin/bash -c “dotnet restore && dotnet publish -c Release -o ./obj/Docker/publish”

WORKDIR /app/obj/Docker/publish

ENTRYPOINT [“dotnet”, <<Assembly Name>>.dll”]

Configuring Continuous Delivery to Service Fabric Cluster

Apart from App Service on Linux, you can also configure continuous delivery to Service Fabric Clusters. To configure continuous delivery to a service fabric cluster, first you need to create one on Azure. If you configured an existing Service Fabric Cluster on Azure, make sure that you install the cluster certificate on your development machine with the exportable key option checked.

Configure Continuous Delivery Tools to Service Fabric Cluster

When configuring continuous delivery to Service Fabric you will need to enter the password for the cluster certificate and select an existing Azure Container registry. The release task uses the cluster certificate and password to connect to the cluster while deploying to it.

Configuring Continuous Delivery to Azure Container Services

We recently, removed support for Azure Container Services from the extension. We are redesigning our support for Azure Container services and will update the extension soon to include support for Kubernetes Containers.

Please keep the feedback coming!

Thank you to everyone who has reached out and shared feedback and ideas so far. We’re always looking for feedback on where to take this Microsoft DevLabs extension next. There’s a Slack channel and a team alias vsdevops@microsoft.com where you can reach out to the team and others in the community sharing ideas on this topic.

Ahmed Metwally, Senior PM, Visual Studio
@cd4vs (https://twitter.com/cd4vs)

Ahmed is a Program Manager on the Visual Studio Platform team focused on improving team collaboration and application lifecycle management integration.