我有一台 Jenkins 服务器,它正在尝试在开发环境服务器上运行 git clone 命令。当通过 ssh 手动运行该命令时,没有任何问题,但是当 Jenkins 在环境服务器上执行该命令时,我收到错误:
Receiving objects: 99% (7975/8014), 236.00 MiB | 3.75 MiB/s
fatal: write error: No space left on device
fatal: index-pack failed
我已经在 repo 上运行了 git gc 和 git prune,df -h 显示有足够的空间,df -hi 也是如此。如果您能提供任何帮助或建议,我将不胜感激,谢谢。
答案1
由于某些奇怪的原因,解决方案是让 Jenkins CD 进入您想要克隆到的分支,然后执行原始 git clone 命令。
MY_DIR=/some/folder
mkdir $MY_DIR #verifying the dir exists
cd $MY_DIR; git clone repo.git $MY_DIR
我的理论是,默认情况下,Jenkins 会挂载到服务器的根目录并在那里进行克隆,然后将 repo 移动到最终目标文件夹。如果根分区对于 repo 来说太小,则可能会由于在此工作目录中运行克隆命令而导致问题。