Azure DevOps导入需要通过API授权的Git存储库

时间:2019-07-06 18:17:41

标签: azure-devops azure-devops-rest-api

我能够使用记录在here中的Azure DevOps API导入公共Git存储库。

但是,我无法使用相同的API处理需要授权的存储库。

我查看了使用UI时发送的请求,并尝试通过以下方式提交各种请求来进行反向工程:

{
  "parameters": {
    "gitSource": {
      "url": "[URL]",
      "username": "[USERNAME]",
      "password": "[PASSWORD]"
    }
  }
}

...但是似乎没有任何作用。没有关于如何为Git导入传递授权参数的文档。我试图模仿其他允许这样做的电话,但无济于事。

是否有人成功尝试过此操作,或者我应该尝试其他选择吗?

1 个答案:

答案 0 :(得分:1)

这是我在脚本中一直在做的事情:

# create endpoint
$endpoint = irm "$targetUrl/serviceendpoint/endpoints?api-version=5.0-preview" -Method:Post -ContentType "application/json" `
   -Headers @{Authorization = "Basic $base64AuthInfo"} `
   -Body ( '{{"name":"temporary-script-git-import","type":"git","url":"https://{3}@dev.azure.com/{3}/{0}/_git/{0}","authorization":{{"parameters":{{"username":"{1}","password":"{2}"}},"scheme":"UsernamePassword"}}}}' -f $sourceName, $username, $token, $organization )

# import repository
$importRepo = irm "$targetUrl/git/repositories/$sourceName/importRequests?api-version=5.0-preview" -Method:Post -ContentType "application/json" `
   -Headers @{Authorization = "Basic $base64AuthInfo"} `
   -Body ( '{{"parameters":{{"deleteServiceEndpointAfterImportIsDone":true,"gitSource":{{"url":"https://{2}@dev.azure.com/{2}/{0}/_git/{0}","overwrite":false}},"tfvcSource":null,"serviceEndpointId":"{1}"}}}}' -f $sourceName, $endpoint.id, $organization )

这将创建一个服务端点以用于连接到git(在我的情况下,它是Azure Devops,但它也可以与Github一起使用),然后使用该服务端点来导入存储库。 $ targetUrl-您的Azure Devops路径:$targetUrl = "https://dev.azure.com/$organization/$targetName/_apis"