#7125·buildkit

当 .dockerignore 中包含任何否定模式时,CopyIgnitedFile 会对所有文件保持静默

作者: saeedturk1969创建于 2026年9月6日更新于 2026年9月6日

CopyIgnoredFile 一旦.dockerignore 包含任何否定的模式(包括与问题无关的目录的否定,以及指向不存在的路径的否定),就完全停止触发。该规则不仅仅是放宽了对重新包含的路径的要求;它对构建中的每个文件都保持沉默。这看起来像是 #5884、#6512 和 #6926 中的虚假正例修复留下的错误,这些修复都涉及了否定。这些修复是正确的,规则不应警告关于!行恢复的路径。当前的行为似乎更进一步,在存在任何否定时都会抑制规则。实际后果比规则不存在更糟糕,因为抑制是由修复引入的。一个项目遇到真正的CopyIgnoredFile,并按照文档中所述的方式进行修复(添加!例外),因此禁用了对之后添加的每个文件的检查,没有任何差异来表明这一点,并且检查继续报告“检查完成,未找到警告”。

这不是假设。这在五天内发生了两次。第一次被捕获,通过添加!行进行修复,并在Docker build --check 后添加了一个 CI 作业来捕获下一个。四天后的第二次发生了绿色检查和我们主分支上的破坏的镜像;十二小时内没有任何部署。