无法使用Service Principal从发布管道访问Azure Devops Git存储库

时间:2019-07-11 16:25:27

标签: git azure azure-devops terraform

我们正在为Azure资源创建Terraform模块;我们已经在项目中为其提供了各自的存储库,但是当尝试在发布管道中调用模块时,会出现超时或错误128。

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

我们最初在托管的构建代理上进行过尝试,但是如果我们需要存储任何永久性信息,则刚刚部署了自己的私有代理。

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

这看起来像是一个供股问题,但是有人可以为我指出解决方法吗?

错误是: C:\ Program Files \ Git \ bin \ git.exe以128退出:克隆到'.terraform \ modules \

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

3 个答案:

答案 0 :(得分:0)

对于面临此问题的其他任何人,我们要解决的唯一方法是使用用户帐户中的PAT; Service Principal仍用于构建,但是从拥有对Project权限的用户帐户添加PAT可以解决此问题,然后我们仅使用令牌替换来确保PAT不会最终出现在代码中。

答案 1 :(得分:0)

只需说明一下,引用私有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"
}

答案 2 :(得分:0)

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

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