如何在VSTS上配置构建以通过FTP部署

时间:2019-11-21 02:55:01

标签: azure-devops azure-pipelines-release-pipeline

更新项目的master分支时,我想使用VSTS来构建和部署我的应用程序(到FTP)。我有下面的脚本。它的工作原理是触发并生成,但随后部署失败,因为它找不到文件,而且我不知道要输入什么值。我收到以下错误。

VSTS生成时,将生成文件放在哪里?

enter image description here

我看过youtube,但是所有示例都过时了,目前尚无法反映VSTS的工作原理,所以我完全陷入了困境。这里没有文章可以反映VSTS目前的工作方式,Microsoft页面也无济于事。

我的文章要用完了,现在已经不多了,我很猜测,因此我们将不胜感激。

# ASP.NET Core
# Build and test ASP.NET Core projects targeting .NET Core.
# Add steps that run tests, create a NuGet package, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

variables:
  buildConfiguration: 'Release'

steps:
- script: dotnet build --configuration $(buildConfiguration)
  displayName: 'dotnet build $(buildConfiguration)'

- task: FtpUpload@2
  inputs:
    credentialsOption: 'inputs'
    serverUrl: 'ftp://xxxxxxx.xxxxxxxx.xxxxx/'
    username: 'xxxxxxxxx'
    password: 'xxxxxxxxxx'
    rootDirectory: '/'
    filePatterns: '**'
    remoteDirectory: '/'
    clean: false
    cleanContents: true
    preservePaths: false
    trustSSL: false

我改成了这个

rootDirectory: $(Agent.BuildDirectory)

并尝试了此

rootDirectory: $(Build.StagingDirectory)

现在构建成功,但是现在我收到此错误/警告。什么都没有部署。

enter image description here

1 个答案:

答案 0 :(得分:0)

设置system.debug=true后,打开日志进行详细的编译过程,您会看到:

enter image description here

它正在寻找您在任务中指定的目录'/'。但是,不幸的是,通过/获得的内容不是您的回购的任何部分。然后服务器告诉您抱歉,在您的存储库中找不到此类文件或目录。

此参数是从VSTS仓库中获取文件或文件夹,因此在这里您需要使用一些单词来使服务器知道您想要从仓库中获取什么。


(1)由于此任务在构建管道中,因此您可以使用$(Build.SourcesDirectory)来表示整个存储库。

(2)另外,如果您只想复制仓库的一部分,例如文件夹或文件,只需输入相对路径即可。例如:

  • 仅在文件夹upload.json下上传文件jobs 输入rootDirectory: jobs/upload.json
  • 上传一个文件夹或文件,只需在Repos的根路径中输入 rootDirectory: {folder name}rootDirectory: {folder name}。像:rootDirectory: jobsrootDirectory: web.config