首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用DevOps任务(git克隆)在Azure PowerShell服务器发布管道中运行Git命令

如何使用DevOps任务(git克隆)在Azure PowerShell服务器发布管道中运行Git命令
EN

Stack Overflow用户
提问于 2020-10-17 21:35:31
回答 1查看 1K关注 0票数 0

我试图在Azure DevOps服务器中通过DevOps任务执行git命令,并且面临身份验证问题。更具体的是,任务始终与错误代码1一起退出,因为它要求用户名和密码。我试图执行的git命令是:

代码语言:javascript
复制
$wikiUrl = 'https://azure-devops-server/tfs/Common/MainProject/_git/MainProject.wiki'
git clone $wikiUrl $tmpDirName --depth 1

# Editing files content

git -C $tmpDirName add $statusPageRepoPath
git -C $tmpDirName commit -m 'update status page'
git -C $tmpDirName push

出于安全考虑,我不想添加用户名和密码作为参数。我感兴趣的是让它使用从执行中检索到的用户凭据,而不是显式定义的。

Microsoft推荐的解决方案是在代理中启用允许脚本访问OAuth令牌的选项。我已经启用了此选项,如下图所示,但仍然会出现相同的错误。

看起来,git克隆命令无法访问令牌,它一直在请求凭据。我还测试了git签出,它看起来工作正常。问题主要出现在克隆命令中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-17 21:35:31

经过多次尝试和尝试不同的解决方案,我设法使它发挥作用。作为第一步,正如我在问题中提到的,我在代理中启用了允许脚本检索OAuth令牌的选项。

这看起来还不够,因为它还需要在请求中传递令牌。为了做到这一点,我应用了以下更改:

  1. I在git克隆之前更改了存储库的URL。最初的网址是:$wikiRawUrl = 'https://azure-devops-server/tfs/Common/MainProject/_git/MainProject.wiki

新的是:$wikiRawUrl = 'https://azure-devops-server/tfs/Common/MainProject/_git/MainProject.wiki‘$url = "$($wikiRawUrl)".Replace("https://",“) $wikiUrl = "https://$($env:SYSTEM_ACCESSTOKEN)@$url

,它将访问令牌env:SYSTEM_ACCESSTOKEN添加到存储库的URL .前面。

  1. ,我在git命令中添加了额外的参数,以便再次将访问令牌作为额外的头传递到它们中。此外,为了确保我们本地提供的证书不会有任何问题,我还明确地将https.sslbackend应用于schannel (这个部分来自于Azure DevOps发布管道的反向工程本机任务)。因此,最初的命令是:

git克隆$wikiUrl $tmpDirName -深度1#编辑文件内容git -C $tmpDirName添加$statusPageRepoPath git -C $tmpDirName提交-m‘更新状态页’git -C $tmpDirName推送

新的例子是:

git -C http.extraheader=授权:承载$($env:SYSTEM_ACCESSTOKEN)“-c http.sslbackend="schannel”克隆$wikiUrl $tmpDirName --深度1#编辑文件内容git -c $tmpDirName -c http.extraheader=“授权:承载$($env:SYSTEM_ACCESSTOKEN)”-c http.sslbackend="schannel“add $statusPageRepoPath git -C $tmpDirName $statusPageRepoPath$statusPageRepoPath git -c $tmpDirName $statusPageRepoPath”en25$()“commit 'update status‘git en24#http。Extraheader=“授权:无记名$($env:SYSTEM_ACCESSTOKEN)”-c http.sslbackend="schannel“push

所有上述更改都运行良好,最后我能够在PowerShell中使用git命令而没有任何问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64407588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档