在我的TFS 2017构建定义中,我试图将具有特定名称(Package)的文件夹复制到我的Artifacts目录。我只对特定文件夹本身感兴趣,而不是它的父文件夹。
有人可以告诉我应该如何使这项工作?
“复制文件”任务的当前配置: 来源:$(agent.builddirectory) 内容:** \包*** 目标文件夹:$(build.artifactstagingdirectory)\ MyArtifact
这导致以下文件夹结构,而我唯一感兴趣的是Package文件夹: \ MyArtifact \ folderX \ S \ folderY \ folderZ \ folderA \封装
答案 0 :(得分:9)
使用 TFS2017update1 及以上, VSTS ,您只需检查Copy Files Task中高级选项下的拼合文件夹即可。现在最简单的解决方案。
这会使文件夹结构变平并将所有文件复制到 指定的目标文件夹。
不确定您是否正在使用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