首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins管道-签出前清除git清洁-fdx“未能删除:目录不为空”

Jenkins管道-签出前清除git清洁-fdx“未能删除:目录不为空”
EN

DevOps用户
提问于 2019-10-30 17:37:18
回答 2查看 11.1K关注 0票数 1

我将我的Jenkins构建配置为“检查前清洁”,用于git源代码:

代码语言:javascript
复制
Job Config > Source > git > Behaviours > Clean before checkout

这会导致

代码语言:javascript
复制
Resetting working tree

git reset --hard # timeout=10
git clean -fdx # timeout=10

在工作开始之前。

这个错误与

代码语言:javascript
复制
stderr: warning: failed to remove web/static/node_modules/.../fonts/google-fonts: Directory not empty

如果我重新运行作业(简单地重放),我会得到同样的错误。

如果我再一次运行它,git干净的工作很好,工作结束与成功在最后。

如果我再次启动它,它会再次出错2次,直到它在第三次工作为止。情况总是如此。

这到底是怎么回事?

EN

回答 2

DevOps用户

回答已采纳

发布于 2020-01-02 12:30:28

我们没有找到原因,也没有找到真正的解决办法。

不过,有一个解决办法:

在使用rm -rf *的管道阶段之前放置一个scm checkout阶段。这解决了问题,但我将改变被接受的答案,谁张贴真正的原因,并解决问题。

Sidenote:

记住,您将删除Jenkins工作区中的任何内容。所以一定要确保你在Git中有你需要的所有东西,这样它就会带着结账回来,或者以其他方式把它拿回来。

如果您依赖于以前运行的Jenkins工作区中的文件,则此方法不适合您!

(虽然您可能想要调整作业,所以不再需要以前运行的文件了。每次运行都应该包含它自己需要的文件,而不是依赖其他运行。)

票数 0
EN

DevOps用户

发布于 2020-01-02 13:56:06

我认为这可能只是一个权限问题。您可以作为运行Jenkins的用户手动运行git clean -fdx来测试这一点。如果它不起作用,请用sudo git clean -fdx再试一次。如果它工作,那么它可能是一个问题,对一个或多个文件/目录的权限或所有权在回购。

作为替代,您可以安装工作区清理插件,它提供了用于清理工作区目录的cleanWs()函数。有不同的选项,所以请咨询文档,看看什么最适合您的环境。

票数 0
EN
页面原文内容由DevOps提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://devops.stackexchange.com/questions/9623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档