вторник, 8 мая 2018 г.

TFS  2015. Ошибка таски "Azure Web App Deployment".

Сегодня в очередной раз столкнулся со странной проблемой при релизе Azure Web App из TFS. Что интересно, текст ошибки постоянно меняется, задача падает, но, в то же время, файлы иногда копируются корректно. В любом случае, такое поведение нас не устраивает, так как из-за этого можно забыть про все новомодные CI/CD.


Итак, при анализе логов выполнения таски мы можем видеть следующие варианты текста ошибки:

2018-05-08T01:13:13.1929070Z Publish-AzureWebsiteProject -Name "www.lin.by" -Package "e:\site\site.zip" -Slot "production"  -ErrorVariable publishAzureWebsiteError
2018-05-08T01:13:15.3023895Z ##[error]An error occurred while sending the request.

------

2018-05-08T06:46:23.0384250Z Publish-AzureWebsiteProject -Name "www.lin.by" -Package "e:\site\site.zip" -Slot "production"  -ErrorVariable publishAzureWebsiteError
2018-05-08T06:46:25.0675745Z ##[error]An error occurred while sending the request.
2018-05-08T06:46:25.7707421Z Updating deployment status
2018-05-08T06:46:26.7239306Z ##[warning]Cannot update deployment status for www.lin.by - {"Message":"Deployment with id '2234' exists"}

------

2018-05-08T06:56:02.0390661Z Get-AzureWebSite -Name www.lin.by -ErrorAction SilentlyContinue -ErrorVariable azureWebSiteError -Slot production 
2018-05-08T06:56:05.0548677Z ##[warning]System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a receive. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
2018-05-08T06:56:05.0548677Z ##[warning]   at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
2018-05-08T06:56:05.0548677Z ##[warning]   at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
2018-05-08T06:56:05.0548677Z ##[warning]   --- End of inner exception stack trace ---
2018-05-08T06:56:05.0548677Z ##[warning]   at System.Net.Security._SslStream.EndRead(IAsyncResult asyncResult)
2018-05-08T06:56:05.0548677Z ##[warning]   at System.Net.TlsStream.EndRead(IAsyncResult asyncResult)
2018-05-08T06:56:05.0548677Z ##[warning]   at System.Net.Connection.ReadCallback(IAsyncResult asyncResult)
2018-05-08T06:56:05.0548677Z ##[warning]   --- End of inner exception stack trace ---
2018-05-08T06:56:05.0548677Z ##[warning]   at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
2018-05-08T06:56:05.0704917Z ##[warning]   at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)
2018-05-08T06:56:05.0704917Z ##[warning]   --- End of inner exception stack trace ---
2018-05-08T06:56:05.0704917Z ##[warning]   at Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
2018-05-08T06:56:05.0704917Z ##[warning]   at Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task)
2018-05-08T06:56:05.0704917Z ##[warning]   at Microsoft.WindowsAzure.Management.WebSites.WebSpaceOperationsExtensions.List(IWebSpaceOperations operations)
2018-05-08T06:56:05.0704917Z ##[warning]   at Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebSitesManagementExtensionMethods.GetFromAzure(IWebSiteManagementClient client, String website)
2018-05-08T06:56:05.0704917Z ##[warning]   at Microsoft.WindowsAzure.Commands.Utilities.Websites.WebsitesClient.GetWebsite(String name)
2018-05-08T06:56:05.0704917Z ##[warning]   at Microsoft.WindowsAzure.Commands.Websites.GetAzureWebsiteCommand.b__3_0()
2018-05-08T06:56:05.0704917Z ##[warning]   at Microsoft.WindowsAzure.Commands.Websites.GetAzureWebsiteCommand.Do(Action call)
2018-05-08T06:56:05.0704917Z ##[warning]   at Microsoft.WindowsAzure.Commands.Utilities.Common.AzurePSCmdlet.ProcessRecord()
2018-05-08T06:56:05.0704917Z New-AzureWebSite -Name www.lin.by -Location centralus -Slot production
2018-05-08T06:56:58.9790251Z ##[error]Conflict: Website with given name www.lin.by already exists.

----

Решение (очень условное), нашлось в настройке Remote debugging для Web App Service. На самом деле, это больше похоже на баг, чем на фишку, но как есть. В общем, для "лечения" надо перейти в App Service > Application Settings. Там мы найдем настройки Debugging. Вот с ними-то и надо "играться". Варианты, которые мне помогли (если не помог один, надо пробовать второй):

1. Включить "Remote debugging", выбрать версию студии 2013, сохранить. Затем отключить Remote debugging, сохранить и перезапустить Web App Service.
2. Включить "Remote debugging", выбрать версию студии 2013, сохранить и перезапустить Web App Service.


После этого перезапускаем деплоймент и убеждаемся, что задача завершилась корректно.

Если кто-либо подскажем мне решение лучше, с удовольствием дополню статью.

1 комментарий: