我创建了一个构建策略,以便在代码库的一部分被修改时运行CI管道。我希望排除掉一些文件来重新触发构建。
路径过滤器包括了所有的文件,但不包括README.md文件。
当创建一个对README.md文件进行修改的pull-request时,没有触发构建(如预期的那样)。
当在其他文件中创建拉请求时,会触发构建(如预期)。
当在另一个文件中创建拉请求时,构建会被触发,但当我提交对README.md文件的更改时,它会使当前构建失败,并开始一个新的构建。(这并不出乎我的意料,我希望路径过滤器能够阻止重建,因为该文件在本次构建中应该被忽略)
似乎构建策略路径过滤器只在创建拉取请求时有效。
有什么方法可以在不触发重建的情况下将文件提交到现有的拉请求中?
根据你的描述,我可以重现这种情况。
下面是一个 门票 关于这种情况的解释。
有什么方法可以在不触发重建的情况下提交文件到现有的pull-request?
你可以参考上面票据中的解决方法。
另一个解决方法是:你可以尝试将文件提交的条件设置为 "触发" 作为 '手动' 在 "建设验证".
在这种情况下,你可以在Pull Request中手动排队构建。
当一个新的提交提交到源分支时,当前的构建可以继续运行而不会直接失败。
希望能帮到你。
我无法解决在新提交上重建的问题。
但是,我可以解决我们的特殊问题。在我们的流水线中,有一个生成文件和提交文件的步骤,这将触发重建。我添加了一个步骤,检查文件是否已经被添加,并跳过再次提交生成的文件。
为了检查文件是否已经存在于pull request中,我使用以下命令。
git diff origin/master -- {filename} --exit-code --shortstat