GitHub Actions:能否将可重用工作流作为步骤调用及报错排查
问题解答
核心结论
不能在主工作流的步骤中调用通过workflow_call定义的可重用工作流,这类可重用工作流只能在作业级别进行调用。
错误原因分析
你当前的写法是在作业的steps里用uses调用仓库,GitHub Actions会把这个当成要调用一个Action(而非可重用工作流),所以会去目标仓库找action.yml/action.yaml或Dockerfile,而你的仓库里只有可重用工作流文件,自然就触发了如下错误:
Error: Can't find 'action.yml', 'action.yaml' or 'Dockerfile' under
正确调用方式
要调用workflow_call类型的可重用工作流,需要在主工作流的jobs下直接定义作业,通过uses指向目标工作流,而不是嵌套在步骤里。修改后的主工作流代码如下:
name: main-workflow on: workflow_dispatch: inputs: message: type: string description: 'A message to pass to reusable workflow' jobs: use-reusable-workflow: # 直接通过uses调用可重用工作流,无需指定runs-on(可重用工作流会定义自身运行环境) uses: my-org/reusable-workflow/.github/workflows/reusable-workflow.yml@main with: message: ${{ github.event.inputs.message }} secrets: A_SECRET: ${{ secrets.A_SECRET }}
补充说明
- 如果确实需要在步骤级复用逻辑,应该把逻辑封装成GitHub Action(必须包含
action.yml/action.yaml配置文件),而非workflow_call类型的可重用工作流。 - 可重用工作流的定位是复用完整的作业流程,适合跨工作流共享多步骤的任务集合。
内容的提问来源于stack exchange,提问作者Coder3000
相关产品推荐
相关产品推荐

