TeamCity-FTP上传到Azure失败

时间:2018-07-19 13:18:40

标签: azure ftp teamcity

我正在尝试使用TeamCity构建将.Net Core 2.0项目部署到Azure Web应用。

共有3个步骤:
1-Nuget Restore
2-dotnet发布
3-FTP上传

在步骤2之后,我得到一个文件夹“输出”,其中包含所有需要复制到我的Azure Web应用程序中的内容。
我配置了第3步,将内容从该文件​​夹复制到Azure FTP上的wwwroot文件夹中。此步骤将复制3个DLL,然后显示以下消息:

  

[步骤3/3]部署问题:无法通过FTP上传工件。答复是:550该进程无法访问文件,因为该文件正在被另一个进程使用。

这是配置:

enter image description here

以下是代理上的日志:

[Step 3/3] Uploaded [C:\BuildAgent\work\Output\MyLib\AutoMapper.Net4.dll] (28 KB)
[Step 3/3] > TYPE I
[Step 3/3] < 200 Type set to I.
[Step 3/3] > PASV
[Step 3/3] < 227 Entering Passive Mode (137,135,184,233,39,161).
[Step 3/3] > STOR AutoMapper.dll
[Step 3/3] < 125 Data connection already open; Transfer starting.
[Step 3/3] < 226 Transfer complete.
[Step 3/3] > CWD /site/wwwroot
[Step 3/3] < 250 CWD command successful.
[Step 3/3] Uploaded [C:\BuildAgent\work\Output\MyLib\AutoMapper.dll] (163 KB)
[Step 3/3] > TYPE I
[Step 3/3] < 200 Type set to I.
[Step 3/3] > PASV
[Step 3/3] < 227 Entering Passive Mode (137,135,184,233,39,168).
[Step 3/3] > STOR MyLib.PrecompiledViews.dll
[Step 3/3] < 550 The process cannot access the file because it is being used by another process. 
[Step 3/3] Deployment problem: Failed to upload artifacts via FTP. Reply was: 550 The process cannot access the file because it is being used by another process. 
[Step 3/3] Step Copy to Azure (FTP Upload) failed

我尝试使用FileZilla上传文件,一切正常,所以我想问题出在TeamCity端。

1 个答案:

答案 0 :(得分:0)

您必须先停止Azure应用程序:

az login --username %AZURE_OWNER_ACCOUNT% --password %AZURE_OWNER_PASSWORD% --tenant %AZURE_TENANT_ID%
az webapp stop --name %AZURE_APP% --resource-group %AZURE_RESOURCE_GROUP% --subscription %AZURE_SUBSCRIPTION_ID%

然后上传FTP(上面的“复制到Azure”步骤),然后重新启动应用程序:

az login --username %AZURE_OWNER_ACCOUNT% --password %AZURE_OWNER_PASSWORD% --tenant %AZURE_TENANT_ID%
az webapp start --name %AZURE_APP% --resource-group %AZURE_RESOURCE_GROUP% --subscription %AZURE_SUBSCRIPTION_ID%

只需完成TeamCity项目中的参数,即可开始使用

P.S。有时您必须在“停止”尝试之后稍等片刻,因为事情是异步的

P.P.S。由于Azure CLI工具中的错误,可能需要将两个“ az”命令都加入一个单行脚本中(因为如果在非交互式帐户(如SYSTEM)下运行,则在成功执行第一个az命令后它们可能会无声地失败),因此您可以相应地执行“ az登录&& az停止”和“ az登录&& az启动”。

P.P.P.S。 https://docs.microsoft.com/en-us/cli/azure/install-azure-cli