gpt4 book ai didi

git - 使用 GitVersion 作为 TeamCity 中的构建步骤的私有(private)存储库连接错误

转载 作者:行者123 更新时间:2023-12-04 14:20:08 25 4
gpt4 key购买 nike

我正在为我正在处理的项目配置 CI 环境,但我被卡住了。在我将在这里描述问题之前是我使用的工具和技术堆栈:

  • Teamcity 8.1.5 作为构建服务器,
  • Git 作为源版本控制,
  • GitFlow 作为 Git 工作流,
  • TFS 2013 作为协作项目(绑定(bind) Git 存储库),
  • GitVersion 作为标记程序集和版本的工具。

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

    场景:

    我想使用 GitVersion 工具自动标记每个构建的源代码。这就是为什么作为第一个构建步骤,我添加了带有命令的命令行步骤:
    gitversion.exe "%system.teamcity.build.checkoutDir%" /output "buildserver" 
    /u "Domain\Username" /p "Pass"

    存储库 url 由 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
  • 将用户名作为 url 的一部分传递:http://Domain\UserName@tfs-server-url\projectname但它因不同的错误而失败:Malformed URL "http://Domain\UserName@tfs-server-url\projectname"
  • git fetch作为构建步骤(检查凭据是否正常),成功,
  • 使用谷歌,但我没有发现类似的问题。

  • 有没有人遇到过类似的问题?你会建议做什么? GitVersion 似乎别无选择。恐怕唯一的解决方法是关心手动标记,这不方便,尤其是使用 GitFlow。

    最佳答案

    由于我在帮助一位遇到同样问题的同事时偶然发现了这个问题:
    如果在 TeamCity 下运行时遇到这个无用的错误,那是因为 GitVersion 不知道它被要求构建哪个分支。
    确保您已设置 env.Git_Branch (拼写很重要!)环境变量。该变量通常会被初始化为 %teamcity.build.vcs.branch.[Repository_Id]% .
    有关更多信息,请参阅 https://gitversion.net/docs/reference/build-servers/teamcity 处的文档。

    关于git - 使用 GitVersion 作为 TeamCity 中的构建步骤的私有(private)存储库连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27144453/

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