【问题标题】:Cannot access Azure Devops Git repo from release pipeline using Service Principal无法使用服务主体从发布管道访问 Azure Devops Git 存储库
【发布时间】:2023-03-08 13:03:01
【问题描述】:

我们正在为 Azure 资源创建 Terraform 模块;我们在项目中为每个模块提供了自己的 repo,但是当尝试在发布管道中调用模块时,我们会遇到超时或错误 128。

这作为具有部署权限的用户在管道之外工作,但是我们使用服务主体在发布管道中进行部署,它也具有正确的权限;看起来问题在于服务主体在 Azure DevOps 中没有任何权利。

我们最初尝试使用托管构建代理,但如果我们需要存储任何永久信息,我们刚刚部署了我们自己的私有代理。

模块“rg”{ source = "git::https://dev.azure.com/*****/Terraform/_git/azmodresourcegroup//module?ref=v1.0" }

这看起来像是一个权利问题,但谁能指出我的解决方法?

错误是: C:\Program Files\Git\bin\git.exe exited with 128: Cloning into '.terraform\modules\

或长时间(30 分钟)超时。

【问题讨论】:

    标签: git azure azure-devops terraform


    【解决方案1】:

    再详细说明一下,引用托管在私有 AzureDevOps 存储库中的 terraform 模块/使用个人访问令牌进行身份验证。

    module "example_module" {
        source = "git::https://INSERT_ORG_NAME:INSERT_TOKEN@dev.azure.com/INSERT_ORG_NAME/terraform_module/_git/terraform_module?ref=INSERT_TAG"
    }
    

    【讨论】:

    • 为什么投反对票?这个答案比说我们在选择的“正确”答案中添加了“PAT”更有价值。
    【解决方案2】:

    对于其他面临此问题的人,我们解决此问题的唯一方法是使用用户帐户中的 PAT;服务主体仍用于构建,但从具有项目权限的用户帐户添加 PAT 解决了这个问题,然后我们只是使用令牌替换来确保 PAT 没有最终出现在代码中。

    【讨论】:

    • 感谢您在这里分享您的解决方案,它可以帮助遇到同样问题的其他社区成员。
    【解决方案3】:

    您可以考虑使用System.AccessToken。此预定义变量包含构建管道的访问令牌,并且未链接到用户。

    您可以在构建期间读取令牌。

    【讨论】:

      猜你喜欢
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-20
      相关资源
      最近更新 更多