【问题标题】:TFS Release Artifacts - How to Link Version Control Artifacts?TFS 发布工件 - 如何链接版本控制工件?
【发布时间】:2017-12-09 08:06:41
【问题描述】:

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

根据我目前所学到的方法是链接一个工件并在 TFS RM 中的 PowerShell 任务中引用工件链接。

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

我收到一条错误消息:

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

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

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

我还没有在 MarketPLace 中找到一个下载 TFS 版本控制绑定和工作区中的原始文件以在发布代理服务器上免费执行的文件。

【问题讨论】:

    标签: tfs azure-devops release-management


    【解决方案1】:

    你不能。在构建过程中发布工件。您可以轻松控制发布的确切文件夹/文件。

    【讨论】:

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

    简单的方法是您可以使用Get a file REST API获取文件。

    1. 单击在代理上运行
    2. 勾选允许脚本访问 OAuth 令牌选项(确保构建服务帐户具有下载文件的权限)
    3. 将 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
    

    如果要在一个文件夹中下载多个文件,可以custom build task调用PowerShell创建工作区并使用Microsoft Team Foundation Server Extended Client package获取文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-29
      • 2016-08-06
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      • 2019-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多