GitHub Push路径与标签过滤器触发异常问题咨询
GitHub Actions工作流触发问题修复方案
问题根源
Workflow 1 分支推送不触发的原因
Workflow 1的on.push同时配置了paths和tags,GitHub Actions中这两个条件是逻辑与关系——必须同时满足路径匹配且是标签推送才会触发。你推送.github/workflows/esp32_push.yml属于分支推送,不满足tags: '*'的要求,因此工作流不触发。
Workflow 2 分支推送不触发的原因
Workflow 2的paths规则仅匹配tlsr825x开头的工作流文件、actions/telink/**和tlsr825x/**路径,你推送的esp32_push.yml完全不在匹配范围内,所以不会触发。
标签推送时两个工作流都触发的原因
GitHub Actions对标签推送有特殊规则:标签推送会忽略paths和branches过滤器:
- Workflow 1配置了
tags: '*',满足标签触发条件; - Workflow 2未限制标签推送,默认会响应所有标签推送。
修复方案
调整Workflow 1(分支+标签推送都触发)
如果希望分支推送(匹配指定路径)和标签推送(任意标签)都能触发,需要将paths和tags拆分为独立的push规则(逻辑或关系):
# In workflow 1 on: push: # 分支推送:匹配指定路径时触发 paths: - '.github/workflows/esp32*' - 'actions/espressif/**' - 'esp32/**' push: # 标签推送:任意标签都触发 tags: - '*'
或者用更简洁的数组写法:
# In workflow 1 on: push: - paths: - '.github/workflows/esp32*' - 'actions/espressif/**' - 'esp32/**' - tags: - '*'
调整Workflow 2(按需配置)
- 如果是路径规则写错(原本想匹配esp32相关内容),修改
paths即可:
# In workflow 2 on: push: paths: - '.github/workflows/esp32*' - 'actions/espressif/**' - 'esp32/**'
- 如果Workflow 2仅需响应
tlsr825x相关分支推送,且不想被标签推送触发,添加tags-ignore规则:
# In workflow 2 on: push: paths: - '.github/workflows/tlsr825x*' - 'actions/telink/**' - 'tlsr825x/**' tags-ignore: - '*'
内容的提问来源于stack exchange,提问作者Paul D Smith
相关产品推荐
相关产品推荐

