【问题标题】:Configuring Azure Pipeline to pull from Github hosted repository将 Azure Pipeline 配置为从 Github 托管存储库中提取
【发布时间】:2021-12-05 06:41:00
【问题描述】:

我目前正在使用 Azure DevOps 管道针对现有基础架构触发 terraform plan

terraform init 阶段的这个管道中,terraform 将分析脚本并从外部存储库下载模块。在运行此管道的初始阶段,我们遇到了以下错误。

fatal: could not read Username for 'https://github.com': terminal prompts disabled

我们使用 PAT 暂时解决了这个问题

git config --global url."https://$(GITHUB-USER-ACCT):$(GITHUB-PERSONAL-ACCESS-TOKEN)@github.com".insteadOf https://github.com

但是,由于这增加了维护 PAT 的额外负担,我想知道我们是否可以从这种方法转移到使用 GitHub 服务连接(在创建管道时自动创建)的方法以用作身份验证机制。此服务连接是使用 OAuth 应用程序创建的。我们使用的服务连接对包含 Terraform 模块的集中存储库具有读取权限。

以下link 描述了如何为 Azure 托管存储库执行此操作。对于托管在 GitHub 中的 Repo,有什么方法可以实现这一点。

【问题讨论】:

    标签: azure azure-devops azure-pipelines


    【解决方案1】:

    正如您所提到的,添加 PAT 令牌已经暂时解决但会获得额外的负载,您可以尝试以下解决方案一次:

    解决方案 1:

    1. 如果您使用的是 Windows 操作系统,请打开凭据管理器 > Windows 凭据 > 通用凭据 > 删除 git 等凭据:https://github.com

    然后再次克隆,git 会让你输入 repo 的凭证。输入可以访问VSTS账号的用户名(邮箱地址)和密码后,repo应该克隆成功了。

    1. 已安装适用于 Windows 的 GIT 凭据管理器。 https://github.com/Microsoft/Git-Credential-Manager-for-Windows/releases

    2. 打开命令提示符并输入命令 git fetch 并继续进行 Push、Pull 等工作,并检查是否工作正常。

    解决方案 2:

    删除C:\Users(profile)\AppData\Local\GitCredentialManager\tenant.cache 文件

    解决方案 3:

    另一种解决方案是在作业选项中“允许脚本访问 OAuth 令牌”:

    在 git push 中使用 System.AccessToken: git push https://$env:SYSTEM_ACCESSTOKEN@dev.azure.com/......

    并授予构建用户推送权限(在 repo 设置中):

    另外,检查这个类似的SO Thread

    【讨论】:

    • @Ranika Nisal,如果我的回答对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢
    猜你喜欢
    • 2015-06-15
    • 2012-12-10
    • 2022-11-15
    • 2020-01-21
    • 2012-12-04
    • 2011-12-11
    • 2016-04-22
    • 2021-03-05
    • 2022-10-24
    相关资源
    最近更新 更多