我有一个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运行时完成?
答案 0 :(得分:1)
很多事情都可能导致这个问题。这些东西过去对我有用。
我知道您在上面说过,但只是要仔细检查:确认当您在从属计算机上手动运行git fetch --all
时,它不会提示您输入密码。如果是这样,Jenkins会陷入这一步,因此您需要设置SSH密钥对。
确保在Jenkins中调用C:\ Program Files(x86)\ Git \ cmd \ git.exe而不是C:\ Program Files(x86)\ Git \ bin \ git.exe。第二个可能会在某些版本的git中导致此问题。
在从属计算机上,将环境变量HOME
设置为C:\users\[username]
,填写用户的用户名。 (对于较旧的操作系统,它是C:\Documents and Settings\[username]
。)然后回收Jenkins服务并重试。
仔细检查管理工具>服务,Jenkins从属服务“Log On As”设置为您的用户,密码正确。如果没有,请设置这些值,重新启动Jenkins服务,然后重试。
如果以上都不起作用,请尝试卸载并重新安装git。如果您不使用它,请尝试安装最新版本的git。