从功能分支调用GitHub可复用工作流失败,寻求排查方案
可能的原因及对应方案
功能分支的工作流文件存在语法错误
GitHub在解析被调用的工作流时,会先拉取目标分支的文件内容。如果功能分支里的{workflow_file}.yml存在语法问题(比如缩进错误、缺少必要的冒号、参数定义格式错误),就会触发the 'uses' attribute must be a path...的解析错误,而非分支不存在的提示。
解决:用GitHub仓库内的Workflow语法校验(提交前GitHub会自动校验,也可以本地用YAML校验工具检查文件),修正功能分支里工作流文件的语法问题。分支名称包含特殊字符
如果你的功能分支名称包含斜杠、空格、@等特殊字符,会干扰GitHub对uses语句的解析逻辑,导致识别为无效格式。
解决:尝试用功能分支对应的commit SHA代替分支名,比如uses: {owner}/{repo}/.github/workflows/{workflow_file}.yml@c9d3bbc17c1fdf6e855f2c28e8b6f4027e168fc6,或者修改分支名称为无特殊字符的格式。功能分支内的工作流文件路径变更
确认功能分支里的工作流文件是否仍在.github/workflows/{workflow_file}.yml路径下。如果在分支修改过程中移动、重命名了该文件,会导致GitHub无法找到正确的工作流文件,触发解析错误。
解决:检查功能分支的文件结构,确保工作流文件路径与调用语句中的路径一致。可复用工作流的定义不符合规范
功能分支里的工作流可能未正确配置为可复用工作流:比如缺少on: workflow_call触发条件,或者workflow_call的输入/输出参数定义存在错误,同时可能冲突了其他触发事件的配置。
解决:检查功能分支的工作流文件,确保正确声明on: workflow_call,且参数定义符合GitHub可复用工作流的规范。
内容的提问来源于stack exchange,提问作者Jhonatas Rosendo

