4

我在将更改推送到远程存储库的辅助构建步骤上挂起的 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 工作目录,我会注意到提交已进行,但尚未推送。如果我尝试 a git push,它会毫无问题地消失。

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

4

3 回答 3

6

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

尝试调用 msysgit 的 bash 以使用所需的 git 命令执行 bash 脚本。

于 2013-08-22T15:49:37.770 回答
2

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

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

或者,如果您使用的是 GitHub,并且很乐意将您的密码放在 url 中(如本文所建议的那样):

git push https://username:password@github.com/username/repository.git
于 2014-05-19T15:34:54.570 回答
1

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

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

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

SET HOME=D:\
git push

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

于 2014-09-03T22:14:10.023 回答