在 Azure DevOps 管道中执行 git Push 但出现致命错误

Sur*_*tap 2 git oauth-2.0 azure-devops

我正在尝试在 Azure DevOps 构建管道中运行 git push 命令,但出现以下错误 -

致命:无法读取“https://dev.azure.com”的密码:终端提示已禁用。

然后我尝试使用我的个人访问令牌(PAT)执行相同的命令,例如

MY_PAT= 'MY_PAT'

B64_PAT=$(printf ":$MY_PAT" | base64)

git -c http.extraHeader="Authorization: Basic ${B64_PAT}" push 
Run Code Online (Sandbox Code Playgroud)

https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&tabs=preview-page#use-a-pat

它起作用了。但由于安全合规性,我无法在管道中使用我的 PAT 有没有办法在不暴露我的 PAT 的情况下使用 git push 命令。请逐步解释 oauth2 身份验证是否有效。

Lev*_*SFT 6

您不需要使用 PAT。您可以直接使用预定义变量System.Accesstoken。看这里

System.AccessToken 是一个特殊变量,它携带正在运行的构建所使用的安全令牌。

将命令更改为以下内容:

B64_PAT=$(printf ":$(System.AccessToken)" | base64)  

git -c http.extraHeader="Authorization: Basic ${B64_PAT}" push
Run Code Online (Sandbox Code Playgroud)

您还可以直接使用 AccessToken,如下所示:

git push https://$(System.AccessToken)@dev.azure.com/org/proj/_git/repo -q
Run Code Online (Sandbox Code Playgroud)