使用GitVersion作为TeamCity中的构建步骤与私有存储库的连接错误

时间:2014-11-26 08:33:11

标签: git authentication tfs teamcity gitversion

我正在为我正在进行的项目配置CI环境而且我遇到了问题。在我将描述问题之前,这里是工具和工具。我使用的技术堆栈:

  • Teamcity 8.1.5 as build server,
  • Git作为源版本控件,
  • GitFlow作为Git工作流程,
  • TFS 2013作为一个协作项目(与Git存储库绑定),
  • GitVersion作为标记装配和发布的工具。

TFS服务器支持:NTLM和基本身份验证。

情景:

我想使用GitVersion工具自动标记每个构建的源代码。这就是为什么作为第一个构建步骤,我使用命令添加了命令行步骤:

gitversion.exe "%system.teamcity.build.checkoutDir%" /output "buildserver" 
/u "Domain\Username" /p "Pass"

GitVersion会从[checkout-dir]\.git\config自动获取存储库网址。

不幸的是,当我运行构建时,我收到一个异常:

LibGit2Sharp.LibGit2SharpException: Request failed with status code: 401

以下是构建日志的输出:

[Step 2/5] Starting: C:\ProgramData\chocolatey\bin\gitversion.exe /output buildserver /u Domain\UserName /p password 
[Step 2/5] in directory: C:\BuildAgent\work\Playground 
[Step 2/5] Working directory: C:\BuildAgent\work\Playground [Step 2/5] Applicable build agent found: 'TeamCity'. 
[Step 2/5] One remote found (origin -> 'http://our.tfs.server.lgbs:8080/tfs/project/_git/Playground'). 
[Step 2/5] Fetching from remote 'origin' using the following refspecs:
    +refs/heads/*:refs/remotes/origin/*. 
[Step 2/5] An unexpected error occurred: 
[Step 2/5] LibGit2Sharp.LibGit2SharpException: Request failed with status code: 401 
[Step 2/5]    at LibGit2Sharp.Core.Ensure.HandleError(Int32 result) 
[Step 2/5]    at LibGit2Sharp.Core.Proxy.git_remote_fetch(RemoteSafeHandle remote, Signature signature, String logMessage) 
[Step 2/5]    at LibGit2Sharp.Network.DoFetch(RemoteSafeHandle remoteHandle, FetchOptions options, Signature signature, String logMessage) 
[Step 2/5]    at LibGit2Sharp.Network.Fetch(Remote remote, FetchOptions options, Signature signature, String logMessage) 
[Step 2/5]    at GitVersion.GitHelper.NormalizeGitDirectory(String gitDirectory, Authentication authentication)

我无法弄清楚它有什么问题。

当我在Build Agent机器上直接从CMD运行相同的命令时,它执行得非常好。

我已经尝试过:

  • 验证了构建步骤命令的运行方式与我在CMD中手动尝试的命令相同,
  • 将存储库凭据添加到Windows凭据存储
  • 使用/ url开关
  • 将url直接传递给GitVersion
  • 将用户名作为网址http://Domain\UserName@tfs-server-url\projectname的一部分传递,但失败并出现了不同的错误:Malformed URL "http://Domain\UserName@tfs-server-url\projectname"
  • 称为git fetch作为构建步骤(以检查凭据是否正常)并成功,
  • 使用了谷歌,但我没有发现类似的问题。

有没有人遇到过类似的问题?你有什么建议吗?似乎除了GitVersion之外别无选择。我担心唯一的解决方法是手工贴标签,这不方便,尤其是GitFlow。

0 个答案:

没有答案