Azure DevOps импортирует репозитории Git, требующие авторизации через API - PullRequest
0 голосов
/ 06 июля 2019

Я могу импортировать публичные Git-репозитории с помощью документированного API-интерфейса Azure DevOps здесь .

Однако я не могу обрабатывать репозитории, требующие авторизации с тем же API.

Я посмотрел на запросы, отправленные при использовании пользовательского интерфейса, и попытался провести обратный инжиниринг, отправив различные запросы в следующем виде:

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

... Но, похоже, ничего не работает.Нет документации о том, как передавать параметры авторизации для импорта Git.Я пытался имитировать другие звонки, которые также допускают это, но безрезультатно.

Кто-нибудь пробовал это с каким-либо успехом или у меня есть какие-либо дополнительные опции, которые я должен попробовать?

1 Ответ

1 голос
/ 07 июля 2019

это то, что я делал в моем сценарии:

# 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 - ваш путь к Devure Azure: $targetUrl = "https://dev.azure.com/$organization/$targetName/_apis"

...