Search code examples
deploymentazure-pipelinesazure-service-fabric

How isUpgrade setting affects deployment process in Service Fabric Application Deployment task in Azure DevOps


Azure Devops has a standard task for deploying apps to ServiceFabric. The task is named Service Fabric Application Deployment and is documented here. Among other settings, it contains an optional boolean isUpgrade setting (default value 'true'). I tried to set it explicitly to true and false, but I did not find any difference in the behavior of the task. In both cases, the deployment was successful, all previously deployed packages were still provisioned, and Azure Pipelines logs were the same. The time of the deployment was the same, too.

My question is what the setting affects? Maybe, somebody has used it in his CI pipelines.


Solution

  • There are 2 types of deployment in Service Fabric. This isUpgrade flag controls which type op upgrade you are executing.

    Regular

    Basically this removes the old application and deploys the new version. So if you have Statefull services, this will remove all state. You will have downtime when you do a regular upgrade.

    Upgrade

    An upgrade will do a lot of things, It will keep the state, it will do health checking, make sure the services are available. Does a rollback when the healthcheck fails, ... If your application or services didn't change, nothing changes in your cluster.

    Typically an upgrade will take more time (This is highly dependent on your health check rules). See the application upgrade flowchart

    More info about the 2 types

    If you look at the code of the task. You see that it will only take effect if overridePublishProfileSettings is true. Otherwise the PulishProfile.xml is used.