当前位置: 首页 > 知识库问答 >
问题:

Azure DevOps REST API在导入私有Git存储库时中断

轩辕佑运
2023-03-14

尝试使用REST API将私有GitHub存储库导入Azure DevOps:

https://docs.microsoft.com/en-us/rest/api/azure/devops/git/import%20requests/create?view=azure-devops-rest-6.0

不出所料,文档不起作用。

我在DevOps项目中有一个基于PAT的服务endpoint,它可以访问我试图导入的GitHub存储库。

下面的PowerShell片段再现了该问题

$headers = @{
    Authorization = "Bearer ****"
}
$org = '***'
$project = '***'
$targetRepositoryId = '***'
$sourceRepositoryUrl = '***'
$gitHubServiceEndpointId = '***'
irm https://dev.azure.com/$org/$project/_apis/git/repositories/$targetRepositoryId/importRequests?api-version=6.0-preview.1 -Method Post -Headers $headers -ContentType application/json -Body @"
{
  "parameters":  {
    "gitSource": {
      "overwrite":  false,
      "url":  "$sourceRepositoryUrl"
    },
    "serviceEndpointId":  "$gitHubServiceEndpointId",
    "deleteServiceEndpointAfterImportIsDone": false
  }
}
"@

抛出一个400错误(错误请求),没有附加信息。

如果我将GitHub存储库公之于众,那么上面完全相同的API请求和完全相同的代码就可以正常工作。

我还100%确定服务endpoint可以访问所讨论的存储库,因为我在Azure DevOps中有管道使用该服务endpoint从GitHub克隆所述存储库。

共有1个答案

丁子石
2023-03-14

只有在使用UsernamePassword授权方案创建服务连接的情况下,我才能使用GitHub服务连接使导入工作--这不能从DevOps本身执行,必须从API执行:

irm "https://dev.azure.com/org/project/_apis/serviceendpoint/endpoints?api-version=6.0-preview.1" -Method Post -Headers $headers -ContentType application/json -Body @"
{
    "authorization": {
        "scheme": "UsernamePassword",
        "parameters": {
            "username": "foo",
            "password": "github access token"
        }
    },
    "name": "Test-5",
    "serviceEndpointProjectReferences": [
        {
            "description": "",
            "name": "Test-5",
            "projectReference": {
                "id": "project id",
                "name": "projectName"
            }
        }
    ],
    "type": "github",
    "url": "https://github.com",
    "isShared": false,
    "owner": "library"
}
"@
 类似资料:
  • 在本章中,我们将讨论如何从一个Bitbucket导入一个仓库到GitLab: 步骤(1): 登录到您的GitLab帐户并点击仪表板中的New project按钮: 步骤(2): 单击导入项目选项卡下的按钮: 步骤(3): 接下来,您需要登录到您的帐户。 如果您没有帐户,请点击注册链接创建一个新帐户,然后登录到帐户。 步骤(4): 当点击按钮(如步骤2所示)时,它将显示下面的屏幕并点击授予访问按钮:

  • 2)生成CA证书请求 3)生成自签有效期-10年 4)使用KeyStoreExplorer这样的程序将密钥对(私钥和自签名证书)导入到新的JKS中

  • 问题内容: Jenkins中建立一个托管在bitbucket上的项目时,我将在URL字段中输入什么? 该存储库是私有的。 问题答案: 我对Jenkins并不熟悉,但是Bitbucket允许您通过https克隆git存储库,https可以接受密码作为url的一部分,如下所示:

  • 问题内容: 我正在尝试运行一个容器,该容器将公开私有GitHub存储库上的软件包中的golang服务。 由于我与GCE合作,因此我的入门图片是google / debian:wheezy。 安装所有必需的依赖项和工具后,我正在运行 包裹是私人仓库。 我添加了GitHub SSH密钥以允许从私有存储库克隆到docker文件: 尽管如此,当go尝试克隆存储库时,我在go get流程中遇到了一个错误:

  • 我正在为我的项目使用Gradle,昨天我在构建项目时遇到了问题,因为https://plugins.gradle.org不起作用。那么有没有办法克隆依赖项

  • 问题内容: 我通过自定义证书配置了不安全的注册表。提供用户名和密码后,收到错误消息为 “来自守护程序的错误响应:获取 https:// ip 地址:5000 / v1 / users /:x509:未知授权机构签名的证书”。 问题答案: 执行以下步骤以使用私有证书对docker登录: 使用以下命令生成私有SSL证书。这将创建带有两个文件domain.crt,domain.key的certs文件夹