Jenkins服务器上的一个作业处于病态状态:它存在,但显然没有.git
目录。因为它存在,Jenkins正在尝试获取git存储库的内容。因为没有.git目录,git fetch
失败。
我尝试修改作业的Jenkinsfile
来打印当前的工作目录,但当然错误发生在Jenkinsfile可用之前,所以这是一个破产。
This question似乎在问一个类似的问题,但似乎没有人有答案。如果我知道工作区在哪里,我可以删除它并重置工作,但唉,我没有。你呢?
答案 0 :(得分:0)
以下是我的一位同事的回答。我觉得有点遗憾,我们找不到更简单的方法......
............................................... ....................
关于“破损”的工作区:我们的想法是找到Jenkins克隆的git repo并运行相同的命令,看看我们是否可以重现错误。
首先,我们使用find
命令查找所有.git
目录 - 它们都具有模糊名称,例如./workspace/e-HFILH6E7MVL5MF6FEZA6572YMZOIT565G7OEWHB73HGZLG2QQUUQ/.git
。然后我们在父目录上使用git remote -v
命令告诉我们git repo有哪些遥控器。 find
可以为我们完成所有这些工作:
find . -type d -iname "*.git" -print -exec git -C {}/.. remote -v \; 2>&1 | tee /tmp/find.log
产生如下输出:
./workspace/p-ONR7CFBI45A4F2W4OKRGITOA37ZR2W6JLDBTTDNH5YQHODMJJIDA/.git
origin https://github.com/bmlltech/baysinf.git (fetch)
origin https://github.com/bmlltech/baysinf.git (push)
origin1 https://github.com/bmlltech/baysinf.git (fetch)
origin1 https://github.com/bmlltech/baysinf.git (push)
./workspace/r-EOIIL74J5KJABP623UIM3FQO6BFVRZUKQPCLIWLAMETY4TH6NS7Q@script/.git
origin https://github.com/bmlltech/market_impact.git (fetch)
origin https://github.com/bmlltech/market_impact.git (push)
origin1 https://github.com/bmlltech/market_impact.git (fetch)
origin1 https://github.com/bmlltech/market_impact.git (push)
然后我们使用了@ dave的vim-fu中的一些来搜索输出文件中每一行后面跟着另一行包含tickdata
的行。这给了我们一个目录名列表,例如./workspace/r-EOIIL74J5KJABP623UIM3FQO6BFVRZUKQPCLIWLAMETY4TH6NS7Q@script/.git
最后,我们在每个父目录上运行git status
,除了一个目录外,所有目录都返回OK。在那一个中,我们运行了Jenkins遇到麻烦的命令,我们也遇到了同样的错误! (编辑)的
然后修复手动删除该“坏”目录中的所有文件。看起来现在一切正常。