用于将gitlab资料档案库上的所有更新复制到azure devops资料档案库的脚本

eqoofvh9  于 2022-11-20  发布在  Git
关注(0)|答案(1)|浏览(267)

在组织中,我们正在从gitlab迁移到azure。有一些仓库有很多历史提交/分支/标签,我们需要镜像到azure-devops。我需要一些建议,如果我们可以写一个脚本来做同样的事情?安排一些自动化来做吗?有人能给予我一些建议/例子来开始吗?

wa7juj8i

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
    
  }
}

你可以在 Postman 中测试:

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:

相关问题