如何将 VSTS 上的构建配置为 FTP 部署

Posted

技术标签:

【中文标题】如何将 VSTS 上的构建配置为 FTP 部署【英文标题】:How do I configure a build on VSTS to FTP deploy 【发布时间】:2019-11-21 02:55:01 【问题描述】:

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

VSTS 构建时,构建文件放在哪里?

我看过 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)

现在构建成功,但现在我收到此错误/警告。没有部署任何东西。

【问题讨论】:

您不会将任何内容复制到“$(build.stagingdirectory)”,因此不会有任何内容要上传 您必须添加复制任务或指向项目的构建输出 只是想看看下面的方法是否能帮助你抓住成功的管道。如果对您的问题没有帮助,请随时在下面发表评论:-) 手动,我可以发布到本地文件夹,然后压缩/解压缩到我的主机。我希望的是,当 VSTS 进行构建时,它会将文件放在发布位置的某个文件夹(类似)中,然后我可以添加一个任务或其他东西来完成复制位。我只是不知道发布的文件如何或去哪里 好吧,好像知道你有什么问题了。在这个问题中,您面临的困惑是不知道dotnet build 步骤完成后文件/文件夹在哪里?那么,这条线索你被rootDirectory误导了吗? 【参考方案1】:

当你设置system.debug=true,然后打开日志查看详细的编译过程,你可以看到:

它正在寻找您在任务中指定的目录“/”。但是,不幸的是,使用/ 获得的内容不是您的存储库的任何部分。然后服务器告诉你对不起,在你的 repos 中找不到这样的文件或目录。

这个参数是从你的 VSTS repos 中获取文件或文件夹,所以这里你需要用一些词让服务器知道你想从 Repos 中获取什么。


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

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

上传文件夹jobs下的文件upload.json,就可以了 输入rootDirectory: jobs/upload.json。 上传Repos根路径下的文件夹或文件,输入即可 rootDirectory: folder name,或rootDirectory: folder name。喜欢:rootDirectory: jobs,或rootDirectory: web.config

【讨论】:

我不想要 who repo。我只想要应用程序构建时创建的文件的位置,以便我可以将它们传输到 Web 服务器 @djack109, 只是想确认一下我可以为您提供什么帮助吗?如果这个答案对您有用,您可以接受它,这将有利于其他社区。​​span>

以上是关于如何将 VSTS 上的构建配置为 FTP 部署的主要内容,如果未能解决你的问题,请参考以下文章

VSTS:如何使用 REST API 获取由构建触发的发布 ID

如何从 VSTS 发布管道部署服务结构应用程序?

如何使用服务挂钩从VSTS触发内部部署jenkins作业

从 VSTS 发布管理将网站构建部署到 Azure

如何在VSTS托管构建代理上返回grunt错误

如何将 VSTS 构建和发布定义从一个实例移动到另一个实例?