情况
我想将发布版本作为.zip文件上传到我的FTP服务器中
对于这种情况,我们假设这是我的环境。
应用程序类型:控制台
我要上传的文件夹:$(System.DefaultWorkingDirectory)/CompanyName.ProjectName.Console/bin/Release
我的ftp服务器主机:ftp://00.00.00.00:21/folderTest
ftp用户名:MyUsername
ftp密码:MyPassword
对于Azure代理:我允许this(168.63.129.16)ip地址能够与我的ftp服务器通信
azure管道
trigger:
- master
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: '$(solution)'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: VSTest@2
inputs:
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- publish: $(System.DefaultWorkingDirectory)/CompanyName.ProjectName.Console/bin/Release
artifact: CompanyName Project Name
- task: FtpUpload@2
displayName: 'FTP Upload'
inputs:
credentialsOption: inputs
serverUrl: 'ftp://00.00.00.00:21'
username: MyUsername
password: MyPassword
rootDirectory: '$(System.DefaultWorkingDirectory)/CompanyName.ProjectName.Console/bin/Release'
remoteDirectory: '/folderTest'
trustSSL: true
问题
当我提交(出于测试目的)某些内容时发生以下错误。
## [错误]错误:连接ETIMEDOUT 00.00.00.00:21(控制插座)
## [错误] Ftp上传失败
[错误]错误:连接ETIMEDOUT 00.00.00.00:21(控制插座)
我复制了相同的问题,并确认此问题与您的FTP服务器更相关。
由于您使用的Microsoft托管代理与FTP服务器所在的VM不在同一网络中,因此应确保可以从external网络访问ftp服务器。否则,预期的行为将在下面显示错误:
我们可以轻松创建一个可由internal网络访问的ftp服务器。但是要使它可以从external网络访问,我们需要做更多的工作。您可能会从此issue获得有用的信息。
(很容易在网上找到许多有关如何使本地ftp服务器可从外部/外部网络或Internet访问的相关文档,因此在这里我不多谈论它们。)
以下是两种可能的解决方案:
1。在存在FTP服务器的VM中安装self-hosted代理,然后调用自托管代理而不是Microsoft托管(vmImage: 'windows-latest'
)代理来运行作业。由于自助代理与FTP服务器位于同一网络中,因此构建管道可以成功。
2。配置您的ftp服务器以使其可从外部网络访问。