Team City git push挂起了这个版本

时间:2013-08-20 22:07:32

标签: git teamcity

我遇到了Team City 8.0.3(版本号27540)的问题,该问题挂在辅助构建步骤上,该步骤将更改推送到远程存储库。我无法找到任何可以让我深入了解错误的信息。

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

通过结帐规则将来源检入“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,它会毫无问题地发生。

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

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

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

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

或者,如果您正在使用GitHub,并且很乐意将您的密码放入网址(as suggested by this post):

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

答案 2 :(得分:1)

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

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

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

SET HOME=D:\
git push

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