Github Workflow中dorny/paths-filter分支推送正常但PR合并失效
解决dorny/paths-filter在PR合并后无法检测代码变更的问题
问题原因
直接推送代码时,Workflow能获取当前commit与上一个commit的完整差异;但PR合并后,默认的actions/checkout@v2只拉取最新的单个commit(默认fetch-depth: 1),没有完整提交历史,导致dorny/paths-filter无法正确计算合并前后的代码变更。
解决方案
方案1:拉取完整仓库历史
修改actions/checkout步骤,添加fetch-depth: 0参数获取完整仓库提交历史,让工具能正确对比合并前后的差异:
- uses: actions/checkout@v2 with: fetch-depth: 0 # 拉取完整提交历史
方案2:指定对比基准commit
如果不想拉取完整历史,可以利用Push事件中的github.event.before(合并前目标分支的commit SHA)作为对比基准,配置dorny/paths-filter的base参数:
- uses: dorny/paths-filter@v2 id: filter with: base: ${{ github.event.before }} # 指定合并前的commit作为对比基准 filters: | clouds-provider: - 'aws/**' - 'azure/**' - 'gcp/**'
验证
修改配置后重新发起PR合并到main或release分支,changes.outputs.clouds-provider就能正确识别aws/azure/gcp目录下的变更,输出true。
内容的提问来源于stack exchange,提问作者Alan Chen
相关产品推荐
相关产品推荐

