如何找到特定版本的Jenkins工作区

时间:2016-12-20 14:38:08

标签: jenkins jenkins-pipeline

Jenkins服务器上的一个作业处于病态状态:它存在,但显然没有.git目录。因为它存在,Jenkins正在尝试获取git存储库的内容。因为没有.git目录,git fetch失败。

我尝试修改作业的Jenkinsfile来打印当前的工作目录,但当然错误发生在Jenkinsfile可用之前,所以这是一个破产。

This question似乎在问一个类似的问题,但似乎没有人有答案。如果我知道工作区在哪里,我可以删除它并重置工作,但唉,我没有。你呢?

1 个答案:

答案 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遇到麻烦的命令,我们也遇到了同样的错误! (编辑)的

然后修复手动删除该“坏”目录中的所有文件。看起来现在一切正常。