【问题标题】:Team City git push hangs the buildTeam City git push 挂起构建
【发布时间】:2013-08-20 22:07:32
【问题描述】:

我在将更改推送到远程存储库的辅助构建步骤中挂起的 Team City 8.0.3(内部版本 27540)存在问题。我找不到任何可以让我深入了解问题所在的信息。

VCS 是通过 SSH 设置的,使用默认私钥,并且结帐模式设置为在代理上自动。

源通过签出规则签入“repositoryPath”。

构建步骤从“repositoryPath”的工作目录运行 git 命令。

这是运行提交的第二步的构建日志:

Step 2/2: Commit dlls (Command Line) (running for 1m:09s)
[16:46:51][Step 2/2] Starting: C:\TeamCity\buildAgent\temp\agentTmp\custom_script5045114249582743499.cmd
[16:46:51][Step 2/2] in directory: C:\TeamCity\buildAgent\work\8df15579b05cdb68\repositoryPath
[16:46:51][Step 2/2] [master 9fa24ba] Teamcity update
[16:46:51][Step 2/2]  1 file changed, 0 insertions(+), 0 deletions(-)
*** HANGS HERE ***

这里是 git push 命令行步骤:

"%env.TEAMCITY_GIT_PATH%" add .
"%env.TEAMCITY_GIT_PATH%" commit -m "Teamcity update"
"%env.TEAMCITY_GIT_PATH%" push

如果我进入 Team City 工作目录,我会注意到提交已进行,但尚未推送。如果我尝试git push,它会毫无问题地关闭。

如果有帮助,我很乐意提供更多细节。

【问题讨论】:

    标签: git teamcity


    【解决方案1】:

    TeamCity 使用 cmd.exe 运行您的 git 命令。正如this stackoverflow answer 所说,Git 依赖于 shell 脚本,这在 cmd 中不可用。

    尝试调用 msysgit 的 bash 来执行带有所需 git 命令的 bash 脚本。

    【讨论】:

    • @Mantzas,它应该是这样的(仅作为示例,我现在没有机会检查它):"C:\Program Files (x86)\Git\bin\bash.exe" -c "git add .; git commit -m 'blah-blah-blah'; git push"
    • @nikita,我收到“未找到 git 命令错误”。好像环境没有设置好?
    • @Mantzas 完全正确。要调查环境,您可以在命令行运行器中使用以下命令:"C:\Program Files (x86)\Git\bin\bash.exe" -c "echo $PATH"
    • @nikita:我终于找到了问题所在。推送到我的远程存储库要求输入未报告的密码,并给人一种挂起推送的错觉。在提供 https 格式的密码后一切顺利。我现在可以直接从命令行推送而无需 bash shell。无论如何,谢谢。
    • @goldsmit409 如果您使用的是 http/s git 调用,您可以提供用户名和密码。如果这不起作用,则使用gitcredentialstore.codeplex.com install 并使用它将存储库的密码保存在构建机器上。希望这会有所帮助
    【解决方案2】:

    正如上面的评论还暗示的那样,根本原因可能是 git 要求输入密码,而 TeamCity 从未提供过密码。

    尝试配置 git 使其不请求密码(例如设置 ssh 密钥/使用 wincred/git-credential-winstore)。

    或者,如果您使用 GitHub 并且愿意将密码输入 url (as suggested by this post):

    git push https://username:password@github.com/username/repository.git
    

    【讨论】:

      【解决方案3】:

      我遇到了这个问题,但是当我使用 SSH 时,我无法在命令中指定用户名和密码。我知道构建正在挂起,因为它正在等待用户提示。

      我注意到,即使我将 HOME 系统环境变量设置为 .ssh 文件夹所在的位置,但当 TeamCity 运行 git push 命令时,它并没有出现在 SET 列表中。

      因此我更改了脚本以重置 HOME 变量:

      SET HOME=D:\
      git push
      

      ...其中 D:\ 是 .ssh 文件夹包含公钥/私钥的位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-04
        • 2012-03-06
        • 1970-01-01
        • 2011-12-31
        相关资源
        最近更新 更多