我们正在为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分钟)超时。
4条答案
按热度按时间krcsximq1#
只是为了更详细地说明,引用托管在私有AzureDevOps存储库中的terraform模块/使用个人访问令牌进行身份验证。
htrmnn0y2#
对于其他任何人面临这一点,唯一的办法,我们可以解决它是使用PAT从一个用户帐户; Service Principal仍然用于构建,但是从具有项目权限的用户帐户添加PAT解决了这个问题,然后我们使用令牌替换来确保PAT不会最终出现在代码中。
dfddblmv3#
您可以考虑使用
System.AccessToken
。此预定义变量包含构建管道的访问令牌,并且未链接到用户。您可以在生成期间读取标记。
gab6jxml4#
正如已接受的答案所评论的那样,截至2023年,服务主体现在可以克隆Azure存储库。解决方案在这里详细介绍-https://stackoverflow.com/a/76464678/1196415