无法使用服务主体从发布管道访问Azure Devops Git存储库

t2a7ltrp  于 2023-06-20  发布在  Git
关注(0)|答案(4)|浏览(137)

我们正在为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退出,显示128:克隆到“.terraform\modules\”
或长时间(30分钟)超时。

krcsximq

krcsximq1#

只是为了更详细地说明,引用托管在私有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"
}
htrmnn0y

htrmnn0y2#

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

dfddblmv

dfddblmv3#

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

gab6jxml

gab6jxml4#

正如已接受的答案所评论的那样,截至2023年,服务主体现在可以克隆Azure存储库。解决方案在这里详细介绍-https://stackoverflow.com/a/76464678/1196415

相关问题