为什么这个詹金斯的工作永远不会完成?

时间:2014-11-11 10:13:41

标签: batch-file jenkins windows-scripting

我有一个Windows 8 jenkins slave(真的不止一个),我希望有一个克隆git存储库镜像的任务,如果它不存在并且总是提取最新的。

我已经得到了这个'执行Windows批处理'步骤:

if not exist "server-reference" (
  git clone --mirror git@ssh.com:something/somewhere.git server-reference
)
pushd server-reference
git fetch --all
popd
exit /B %ERRORLEVEL%

作业的控制台输出到此为止

  

c:\ jenkins \ workspace \ thing \ server-reference> git fetch --all
  获取原点

永远不会完成

如果我在fetch上面切换一个出口,那么我得到预期的退出。

如果我在Windows框上运行批处理文件命令作为jenkins用户,一切都按预期工作。 所以我(我想)知道git fetch --all在奴隶上运行而没有提示输入

如何修改此脚本以便在Jenkins运行时完成?

1 个答案:

答案 0 :(得分:1)

很多事情都可能导致这个问题。这些东西过去对我有用。

  1. 我知道您在上面说过,但只是要仔细检查:确认当您在从属计算机上手动运行git fetch --all时,它不会提示您输入密码。如果是这样,Jenkins会陷入这一步,因此您需要设置SSH密钥对。

  2. 确保在Jenkins中调用C:\ Program Files(x86)\ Git \ cmd \ git.exe而不是C:\ Program Files(x86)\ Git \ bin \ git.exe。第二个可能会在某些版本的git中导致此问题。

  3. 在从属计算机上,将环境变量HOME设置为C:\users\[username],填写用户的用户名。 (对于较旧的操作系统,它是C:\Documents and Settings\[username]。)然后回收Jenkins服务并重试。

  4. 仔细检查管理工具>服务,Jenkins从属服务“Log On As”设置为您的用户,密码正确。如果没有,请设置这些值,重新启动Jenkins服务,然后重试。

  5. 如果以上都不起作用,请尝试卸载并重新安装git。如果您不使用它,请尝试安装最新版本的git。