gpt4 book ai didi

git - 如何在 Azure Pipeline Bash 任务中对 git push 进行身份验证

转载 作者:行者123 更新时间:2023-12-03 17:29:46 32 4
gpt4 key购买 nike

在我们的一个 Azure Pipelines 中,我试图将标签推送到 GitHub,但根据我的方法收到两个错误之一。

无需身份验证,只需简单 git push

- bash: 'git push origin $(tag)'
git push origin 2019.07.01.1
fatal: could not read Username for 'https://github.com': terminal prompts disabled

通行证 AUTHORIZATION: Bearer ***作为额外的标题
- bash: 'git -c http.extraheader="AUTHORIZATION: Bearer $(System.AccessToken)" push origin $(tag)'
git -c http.extraheader="AUTHORIZATION: Bearer ***" push origin 2019.07.01.2
fatal: unable to access 'https://github.com/respondentinc/website/': The requested URL returned error: 400

通行证 AUTHORIZATION: Bearer ***作为额外的标题,使用环境变量

发件人: https://github.com/microsoft/azure-pipelines-agent/issues/1582#issuecomment-392235276
- bash: 'git -c http.extraheader="AUTHORIZATION: Bearer $env:token" push origin $(tag)'
env:
token: $(System.AccessToken)
git -c http.extraheader="AUTHORIZATION: Bearer ***" push origin 2019.07.01.3
fatal: unable to access 'https://github.com/respondentinc/website/': The requested URL returned error: 400

将 Bash 脚本传递给凭证助手

基于 bk2204的回答
- bash: 'git -c credential.helper=''!f() { echo "username=token"; echo "password=$(System.AccessToken)"; }; f'' push origin $(tag)'
git -c credential.helper='!f() { echo "username=token"; echo "password=***"; }; f' push origin 2019.07.02.9
fatal: unable to access 'https://github.com/respondentinc/website/': The requested URL returned error: 400

使用环境变量将 Bash 脚本传递给凭证助手

来自 bk2204的回答
- bash: 'git -c credential.helper=''!f() { echo "username=token"; echo "password=$env:token"; }; f'' push origin $(tag)'
env:
token: $(System.AccessToken)
git -c credential.helper='!f() { echo "username=token"; echo "password=$env:token"; }; f' push origin 2019.07.02.9
fatal: unable to access 'https://github.com/respondentinc/website/': The requested URL returned error: 400

通行证 AUTHORIZATION: Basic ***作为额外的标题

试图模仿默认管道“Checkout”任务的方式。
- bash: 'git -c http.extraheader="AUTHORIZATION: basic $(System.AccessToken)" push origin $(tag)'
git -c http.extraheader="AUTHORIZATION: basic ***" push origin 2019.07.02.10
fatal: unable to access 'https://github.com/respondentinc/website/': The requested URL returned error: 400

我尝试了上述主题的一些变体,但没有运气。

我错过了什么?

更新:2019-07-02

以上所有机制都是有效的认证方式。问题在于 System.AccessToken对 GitHub 无效。 documentation表示它仅用于与 Azure Pipeline 服务交互。

我找不到 Azure Pipeline GitHub App 提供的 token 的变量.我认为这无关紧要,因为它是 installation token .我尝试将此 token 与 GitHubRelease 一起使用任务,但由于缺乏写入权限,它仍然失败。

为了使其正常工作,我使用了 GitHubRelease 任务,并且必须使用具有写入权限的新 OAuth token 创建新的服务连接。

我仍然很好奇如何从 Bash 任务中访问与服务连接关联的 token 。

最佳答案

这里的问题是您正在尝试使用承载身份验证。这适用于 Azure DevOps 托管,但不适用于使用基本身份验证的 GitHub。

处理此问题的最佳方法是设置环境变量 TOKEN拥有您想要的 token (如您的尝试),然后按如下方式运行命令:

git -c credential.helper='!f() { echo "username=token"; echo "password=$TOKEN"; };f' push $(tag)

如果您使用 token ,则任何用户名都可以接受;我只是使用 token ,因为您需要一些用户名,这是一个显而易见的选择。

通过使用 shell 函数作为凭据帮助程序并使用 echo(内置 shell),您的凭据将不会出现在日志或进程输出中。

关于git - 如何在 Azure Pipeline Bash 任务中对 git push 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56843208/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com