2017-06-13 84 views
1

在我当前的管道中,我需要将git拉到比当前管道更小的存储库,但是当我尝试执行git pull(无论是使用powershell还是cmd)时,它都会被阻塞,从未继续前进。在TFS Build Pipeline中无法在PowerShell上运行Git pull

如果我尝试代理正在运行的命令,它们会正确执行。

这是我的PowerShell脚本:

Write-Host (Get-Location) 

Set-Location -Path xxx 

Write-Host (Get-Location) 

#Update the repository, with no prints 

Write-Host "Updating" 
Invoke-Expression "& git pull origin develop --verbose" 

Write-Host "Updated" 

exit 0 

当我跑,我得到了“更新”,但随后仅数个街区那里,没有任何反应。

任何人都可以指出正确的方向吗?

+0

不知道,但我的直觉是与gitserver握手...你有没有尝试git拉代理? 这里是我的本地服务器日志,如果可能有所帮助... '''/Users/demokritos/work/src/github.com/anotherfolder/projectK/weirdfolder /Users/demokritos/work/src/github.com/ abc 正在更新 查找github.com ...完成。 连接到github.com(端口9418)... 192.60.253.113完成。 来自git://github.com/abc/xyz *分支主人 - > FETCH_HEAD = [最新]主人 - >原籍/主人 已经是最新的。 已更新 ''' – Curios

+0

你只是想在构建代理中将另一个远程程序拖到'Build.SourcesDirectory',如'c:\ agent \ _work \ 1 \ s'吗? –

+0

@ Patrick-MSFT不,我在其他文件夹位置,这就是为什么我“设置位置”到另一个路径 –

回答

1

如果这可以帮助别人,我就能够通过使用来克服这个问题下面:

Invoke-Expression "& git -c http.extraheader='AUTHORIZATION: bearer $(System.AccessToken)' pull --progress origin develop -q" 

看来请求被阻止,要求凭据。

0

你可以直接使用通过命令行的任务git的命令,如下图所示: enter image description here

首先确保你可以手动在代理成功运行git命令你构建服务占。如果其他存储库需要某种身份验证,则该脚本或命令还应包含身份验证。

还尝试启用您的构建定义运行Git.exe。 在变量选项卡中设置此变量:

system.prefergit true 

更多详细信息,请参阅本教程:Run Git commands in a script

如果仍然出现错误,建议您启用故障排除更详细的日志记录。为此,请执行以下操作:启用TFS通过添加名为system.debug的变量并将其值设置为'true'来构建调试日志记录。

+0

嘿,我试过了,但不幸的是我无法完成它的工作:\我也跟着文档没有成功。 –

+0

@JorgeLima你有什么细节错误?你能分享相关的构建日志吗? –

1

我遇到了同样的问题,有很多PS1脚本在TFS 2017上构建Delphi项目。只要我们使用版本1.105.7的代理,一切都很好。当更新到新代理(2.120.2)时,脚本无法再获取更改,只是阻塞了构建管道。

干过重的研究之后,我发现这两个代理版本之间的一个区别:

  • 老剂(1.105.7)使用的系统CONFIGS的混帐credential.manager属性,该属性设置为“经理
  • 新的代理商(2.120.2)莫名其妙地清除此设置,这意味着,没有凭据已经到位和脚本“提示”用户名/密码,从而阻止

为了解决这个问题,我只需要在构建机器上再次设置凭证助手。

\path\to\tfs\agent\externals\git\cmd\git.exe config --system credential.helper manager