GitHub Actions父工作流完成后workflow_run未按预期触发排查
排查方向
按踩坑概率从高到低逐一核对即可:
- 工作流名称未精确匹配
workflow_run配置里的workflows字段要求和目标工作流顶部定义的name值完全逐字符匹配,大小写、前后空格、特殊字符差一个都识别不到。直接打开upload工作流文件,核对第一行name:后面的内容,确保和archive配置里写的"upload"完全一致,不要有多余空格、大小写差异。注意这里匹配的是工作流内部写的name字段,不是yml文件的文件名。 - 触发配置没合并到默认分支
GitHub只会读仓库默认分支(一般是main/master)下.github/workflows/目录里的工作流配置,来判定workflow_run的触发规则。要是你是在功能分支写/改的archive工作流配置,还没合并到默认分支,哪怕upload跑完一万次也不会触发archive。必须把archive的配置合并到默认分支之后,这套触发逻辑才会正式生效。 - 工作流权限被限制
进仓库Settings -> Actions -> General页面,拉到「Workflow permissions」板块核对:- 没选「Disable actions」,也没开限制仅运行本地动作的选项
- 组织/仓库级别的规则没有拦截跨工作流触发的权限,部分企业版组织会默认关闭非受信工作流的触发链路
- 直接看upload运行页的触发日志
打开任意一次upload工作流的运行详情页,在Workflow run信息区,会直接列出这次运行触发了哪些下游工作流。如果没触发archive,页面一般会直接标清楚拦截原因——是找不到匹配的工作流、还是权限不够、还是配置没生效,照着提示改就行,不用瞎猜。 - 补全配置兜底校验
前面的点都核对完还是不触发的话,可以给workflow_run显式加上全分支匹配规则,避免隐式分支过滤导致的匹配失败,调整后的archive配置参考:
要是手动触发能正常跑,基本可以排除Actions额度耗尽的问题——额度耗尽的时候手动触发也会被拦截。name: archive on: workflow_dispatch: workflow_run: workflows: ["upload"] types: [completed] branches: - '**'
内容的提问来源于stack exchange,提问作者jonathan
相关产品推荐
相关产品推荐

