【问题标题】:Download an application from Azure Devops via command line通过命令行从 Azure Devops 下载应用程序
【发布时间】:2019-02-05 21:02:46
【问题描述】:

我想定期通过命令行(如使用 powershell)从 azure devops 存储库下载一个应用程序,但我不能为此使用 git 插件。除了git还有什么办法吗?

【问题讨论】:

标签: git azure tfs azure-devops devops


【解决方案1】:

您可以使用 Azure DevOps Rest API - Items - Get(不带 git 插件)从 Git 存储库下载文件。

https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/items?path={path}&api-version=5.0-preview.1

如果您添加参数download(例如:?path={path}&download=true),文件将被下载。

因此您可以使用 PowerShell 脚本获取文件:

Param(
   [string]$organization= "<Organization-NAME>",
   [string]$projectName = "<PROJECT-NAME>",
   [string]$repoId= "<Repository-ID>",
   [string]$appPath= "<Application-Path>",
   [string]$user = "",
   [string]$token = "<PERSONAL-ACCESS-TOKEN>"
)

# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

$uri = "https://dev.azure.com/$($organization)/$($project)/_apis/git/repositories/$($repoId)/items?path=$($appPath)&download=true&api-version=5.0-preview.1"

$result = Invoke-RestMethod -Uri $uri -Method Get -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}

【讨论】:

  • 它从 repo 下载所有文件 n 文件夹的位置?我们可以给出任何目的地路径吗?
  • 为什么没有任何 api 可以像使用下载选项的 LIST 一样工作
【解决方案2】:

最好和最简单的选择:

第 1 步:设置 VSTS 代理。 第 2 步:创建一个构建管道(直到最近才被称为定义)

如果您需要任何帮助,请告诉我。

如果你只想使用命令行工具,那么你可以参考-

https://blog.rsuter.com/script-to-clone-all-git-repositories-from-your-vsts-collection/

【讨论】:

    【解决方案3】:

    谢谢大家,我通过小改动解决了这个问题,我没有在 url 中使用 git,而是将 $uri 参数更改为:

    $uri = "<Azure URL>/<RepoID>/_apis/tfvc/Items?path=<ApplicationPath>&versionDescriptor%5BversionType%5D=5&%24format=zip&api-version=4.1-preview.1"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      • 2022-05-13
      • 1970-01-01
      相关资源
      最近更新 更多