VSTS - Take app offline before deployment

2020-03-26 07:03发布

问题:

I'm getting this problem using VSTS continuous deployment to azure

Web Deploy cannot modify the file 'XXX' on the destination because it is locked by an external process

the solution provided in this thread is to manually restart my app in azure, however he's not using VSTS and the question was asked 2 years ago, is this issue fixed on the current VSTS and if so, I would like to know how because I'm having the same problem as the link referenced above.

Thanks

回答1:

You can use "EnableMSDeployAppOffline" feature to set your app offline before deployment by following the instruction here: Web publishing updates for app offline and usechecksum.

If it does not work, you can also create a PowerShell script as following to stop the app, deploy and then restart the app:

    param($websiteName, $packOutput)

    $website = Get-AzureWebsite -Name $websiteName

    # get the scm url to use with MSDeploy.  By default this will be the second in the array
    $msdeployurl = $website.EnabledHostNames[1]


    $publishProperties = @{'WebPublishMethod'='MSDeploy';
                            'MSDeployServiceUrl'=$msdeployurl;
                            'DeployIisAppPath'=$website.Name;
                            'Username'=$website.PublishingUsername;
                            'Password'=$website.PublishingPassword}

    Write-Output "Stopping web app..."
Stop-AzureWebsite -Name $websiteName

Write-Output "Publishing web app..."
$publishScript = "${env:ProgramFiles(x86)}\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\Publish\Scripts\default-publish.ps1"

. $publishScript -publishProperties $publishProperties  -packOutput $packOutput

Write-Output "Starting web app..."
Start-AzureWebsite -Name $websiteName

PowerShell Script from: Build and Deploy your ASP.NET 5 Application to an Azure Web App.



回答2:

Essentially you need to stop - deploy - restart .

You have many options to do it but to more easy would be:

1- Extention: Azure App Services - Start and Stop you can try the extension "Azure App Services - Start and Stop" https://marketplace.visualstudio.com/items?itemName=rbengtsson.appservices-start-stop

2- AzureCLI task From the build or Deployment windows Add am Azure CLI task (currently in Preview)

Add one before the Deployment task with Inline script:

azure webapp stop --resource-group NAME_OF_YOUR_RESOURCE_GROUP --name WEBAPP_NAME

Add another one after the Deployment task with Inline script:

azure webapp start --resource-group NAME_OF_YOUR_RESOURCE_GROUP --name WEBAPP_NAME

I hope that help.