TFS 2017构建没有文件夹结构的复制文件?

时间:2017-10-09 20:51:57

标签: tfs tfsbuild

在我的TFS 2017构建定义中,我试图将具有特定名称(Package)的文件夹复制到我的Artifacts目录。我只对特定文件夹本身感兴趣,而不是它的父文件夹。

有人可以告诉我应该如何使这项工作?

“复制文件”任务的当前配置: 来源:$(agent.builddirectory) 内容:** \包*** 目标文件夹:$(build.artifactstagingdirectory)\ MyArtifact

这导致以下文件夹结构,而我唯一感兴趣的是Package文件夹: \ MyArtifact \ folderX \ S \ folderY \ folderZ \ folderA \封装

3 个答案:

答案 0 :(得分:9)

使用 TFS2017update1 及以上, VSTS ,您只需检查Copy Files Task中高级选项下的拼合文件夹即可。现在最简单的解决方案。

enter image description here

  

这会使文件夹结构变平并将所有文件复制到   指定的目标文件夹。

不确定您是否正在使用2017版本,并且没有拼合文件夹选项。如果要仅复制没有文件夹结构的文件,则需要指定复制根。您可以使用$(Build.StagingDirectory)作为目标。然后使用发布任务from flask import Flask import os from celery import Celery app = Flask(__name__) celery = Celery(app.name, broker='pyamqp://guest@localhost//') @celery.task def hello(): return 'Display some results :)' @app.route('/hello', methods=['POST']) def main(): hello.delay() return 'Querying database...' if __name__ == '__main__': port = int(os.environ.get('PORT', 5000)) app.run(host='0.0.0.0', port=port, debug=True) 作为副本根目录,并将所有内容从此根目录发布到drop。

详细步骤和截图请在这个问题中查看 Eddie 的答案:Copy one file in target directory on deploy from visual studio team services

答案 1 :(得分:1)

如果"包"的相对路径如果没有改变,你可以在" Source"中指定详细路径。实现你想要的功能。

例如,配置“复制文件任务:

源文件夹:$(agent.builddirectory)\folderY\folderZ\folderA\Package

目录:**

目标文件夹:$(build.artifactstagingdirectory)\MyArtifact\Package

您将获得所需的文件夹结构。

答案 2 :(得分:1)

虽然所有答案在某些方面都是正确的,但这并不是我想要实现的目标。 我最终创建了自己的PowerShell脚本,将包文件夹及其内容复制到临时目录:

$BasePath = [System.IO.Path]::GetDirectoryName("$(SolutionPath)")
$Search = "PackageTmp"
$Destination = "$(Build.StagingDirectory)"

Get-ChildItem -Path $BasePath -Filter $Search -Directory -Recurse | Copy-Item -Destination {Join-Path $Destination $(ArtifactName)} -Recurse -Force