Azure DevOps Powershell git push 命令引发"Cannot prompt because terminal prompts have been disabled"安全错误



Inrepo-A有一个Azure DevOps管道,它正在执行一个Powershell脚本,然后执行各种git命令来镜像外部存储库并将其推送到repo-B.

Powershell脚本驻留在自托管代理上:

git clean -ffdx
git clone --bare https://gitrepo.mydomain.com/PROJECT_A/app-name.git
cd app-name.git
git push --mirror https://myorg@dev.azure.com/myorg/MyAdoProject/_git/repo-B

如果我在自托管代理上从命令行手动执行Powershell脚本,则推送到repo-B执行无事件。然而,当从ADO运行管道时,有一个安全问题,我似乎无法绕过。管道撞击时产生的误差git push命令是:

fatal: Cannot prompt because terminal prompts have been disabled.
fatal: could not read Password for 'https://myorg@dev.azure.com': terminal prompts disabled

在阅读了其他一些文章和使用个人访问令牌进行身份验证- Azure DevOps之后,我更新了我的脚本,以使用前面提到的文档中Powershell部分的方法:

git clean -ffdx
git clone --bare https://gitrepo.mydomain.com/PROJECT_A/app-name.git
cd app-name.git
$MyPat = 'personal access token created in ADO'
$B64Pat = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("$MyPat"))
git -c http.extraHeader="Authorization: Basic $B64Pat" push --mirror https://myorg@dev.azure.com/myorg/MyAdoProject/_git/repo-B

然而,这并不能解决问题,并产生与上面相同的错误。

谁能推荐我可能尝试从ADO管道执行时获得所需的授权repo-B吗?

这个问题通过两件事解决了(详细信息请参考这个问题):

  1. 使用Code Read添加个人访问令牌写入权限启用

  2. git push的url中使用PAT:

    git push https://{PAT}@dev.azure.com/{organization}/{project}/_git/{repo-name}

最新更新