TFS发布工件-如何链接版本控制工件?

TFS发布工件-如何链接版本控制工件?,tfs,azure-devops,release-management,Tfs,Azure Devops,Release Management,我正在尝试设置一些powershell脚本,以便在我的TFS发行代理上可用 从我到目前为止所了解的情况来看,实现这一点的方法是将工件链接起来,并在TFS RM中的PowerShell任务中引用工件链接 我遇到的问题是,TFS RM工件只允许我在版本控制中下载整个团队项目,而我只希望将特定子文件夹中的powershell脚本下载到代理 我收到一条错误消息,上面说: 字段(源存储库)工件应具有有效值 那么,如何将TFS的子文件夹链接为可下载的工件 我可以使用自定义任务来完成此任务吗 我还没有在市场

我正在尝试设置一些powershell脚本,以便在我的TFS发行代理上可用

从我到目前为止所了解的情况来看,实现这一点的方法是将工件链接起来,并在TFS RM中的PowerShell任务中引用工件链接

我遇到的问题是,TFS RM工件只允许我在版本控制中下载整个团队项目,而我只希望将特定子文件夹中的powershell脚本下载到代理

我收到一条错误消息,上面说:

字段(源存储库)工件应具有有效值

那么,如何将TFS的子文件夹链接为可下载的工件

我可以使用自定义任务来完成此任务吗


我还没有在市场上找到一个可以在TFS版本控制绑定和工作区中免费下载原始文件以在Release agent服务器上执行的工具。

你不能。作为构建过程的一部分发布工件。您可以轻松控制已发布的确切文件夹/文件。

简单的方法是,您可以使用获取文件

  • 单击“在代理上运行”
  • 选中允许脚本访问OAuth令牌选项(确保生成服务帐户具有下载文件的权限)
  • 将PowerShell任务添加到发布定义(类型:内联脚本)
  • 论据:

    -url '$(System.TeamFoundationCollectionUri)/_apis/tfvc/items?path=$/Scrum2015/ClassLibraryA/hello.ps1&api-version=1.0' -token "$(System.AccessToken)"  -filePath "$(System.DefaultWorkingDirectory)\hello.ps1"
    
    脚本:

    Param([string]$url,
      [string]$token,
      [string]$filePath
    )
    $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "",$token)))
    Invoke-WebRequest -Method Get -Uri $url -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -OutFile $filePath
    

    如果要下载文件夹中的多个文件,可以调用PowerShell来创建工作区并使用获取文件

    那不行。我不希望每次更新构建脚本时都构建解决方案。然后创建一个单独的构建并将其作为辅助工件链接。