在组织中,我们正在从gitlab迁移到azure。有一些仓库有很多历史提交/分支/标签,我们需要镜像到azure-devops。我需要一些建议,如果我们可以写一个脚本来做同样的事情?安排一些自动化来做吗?有人能给予我一些建议/例子来开始吗?
wa7juj8i1#
您可以使用REST API从github迁移到Azure,参考文档如下:Import Request-Create-REST API(Azure DevOps Git)但是如果你的仓库是私有的,首先创建一个“其他git”服务连接是至关重要的,然后你可以使用Rest API将Github Private Repo导入New Repo。你可以使用Rest API来创建它。文档在这里:EndPoints-Create-REST-API例如:网址
POST https://dev.azure.com/{organization}/_apis/serviceendpoint/endpoints?api-version=6.0-preview.4
请求正文
{ "authorization":{"scheme":"UsernamePassword","parameters":{"username":"{User name}","password":"{github access token }"}}, "data":{"accessExternalGitServer":"true"}, "name":"{name}", "serviceEndpointProjectReferences":[{"description":"","name":"{Service connection name}","projectReference":{"id":"{Project Id}","name":"{Project Name}"}}], "type":"git", "url":"{Target Git URL}", "isShared":false, "owner":"library" }
你可以在 Postman 中测试:
发送创建终结点API后,它将在Azure DevOps中成功创建终结点。注意:如何获取github访问令牌:路径:设置-〉开发设置-〉个人访问令牌
2然后,您可以在步骤1中获取ServiceEndPointId,并在Import Repo Rest API中使用它。例如:网址
Post https://dev.azure.com/{Organization Name}/{Project Name}/_apis/git/repositories/{Repo Name}/importRequests?api-version=5.0-preview.1
{ "parameters": { "gitSource": { "url": "Git URL" }, "serviceEndpointId": "{Service EndPoint Id}", "deleteServiceEndpointAfterImportIsDone": false } }
3此外,下面的脚本是一个power shell示例:
[String]$Org = "your organization name" [String]$project = "your project name" [String]$PAT="your PAT " [String]$Repo="your Repo name" [String]$serviceEndpointId="your serviceEndpointId" $url = https://dev.azure.com/+$Org+"/"+"$project"+"/_apis/git/repositories/"+$Repo+"/importRequests?api-version=6.1-preview.1" $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "",$PAT ))) $body = @{ "parameters" = @{ "gitSource" =@{ # the source git repository to import and remember to replace with your correct url "url" = https://github.com/xxxx } "serviceEndpointId" = ]$serviceEndpointId "deleteServiceEndpointAfterImportIsDone" = false } } $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "",$PAT ))) $result = Invoke-RestMethod -Method 'Post' -Uri $url -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Body ($body|ConvertTo-Json) -ContentType "application/json" $result | ConvertTo-Json
在power shell中运行脚本后,您可以在json中获得以下响应信息,这意味着您成功地从github迁移到了带有REST API的Azure:
1条答案
按热度按时间wa7juj8i1#
您可以使用REST API从github迁移到Azure,参考文档如下:Import Request-Create-REST API(Azure DevOps Git)
但是如果你的仓库是私有的,首先创建一个“其他git”服务连接是至关重要的,然后你可以使用Rest API将Github Private Repo导入New Repo。
你可以使用Rest API来创建它。文档在这里:EndPoints-Create-REST-API
例如:
网址
请求正文
你可以在 Postman 中测试:
发送创建终结点API后,它将在Azure DevOps中成功创建终结点。
注意:如何获取github访问令牌:
路径:设置-〉开发设置-〉个人访问令牌
2然后,您可以在步骤1中获取ServiceEndPointId,并在Import Repo Rest API中使用它。例如:
网址
请求正文
你可以在 Postman 中测试:
3此外,下面的脚本是一个power shell示例:
在power shell中运行脚本后,您可以在json中获得以下响应信息,这意味着您成功地从github迁移到了带有REST API的Azure: