You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地引用GitHub Actions可复用工作流时文件找不到的问题求助

解决GitHub Action引用同仓库可复用工作流找不到文件的问题

问题场景

文件结构如下:

.github/workflows/common/affected.yml
.github/workflows/main_pr.yml

在main_pr.yml中尝试调用同仓库的affected.yml作为可复用工作流,但执行时报错:

Can't find 'action.yml', 'action.yaml' or 'Dockerfile' under '/home/runner/work/mono-repo-demo/mono-repo-demo/.github/workflows/common/affected.yml'. Did you forget to run actions/checkout before running your local action?

错误原因

  1. 工作流引用路径错误:配置里写的uses: ./.github/workflows/affected.yml与实际文件路径不符,实际affected.yml在common子目录下。
  2. 调用工作流的Job中额外添加了Steps:使用uses调用可复用工作流时,该Job的逻辑由被调用的工作流完全接管,不能在当前Job下添加自定义Steps(比如actions/checkout),否则GitHub会误将其识别为本地Action而非可复用工作流。

修复方案

1. 修正工作流引用路径

将main_pr.yml中callAffectedApps Job的uses路径改为正确的文件路径:

uses: ./.github/workflows/common/affected.yml

2. 移除调用Job中的多余Steps

删除callAffectedApps Job下的steps块,将actions/checkout步骤移到被调用的affected.yml工作流中。

修正后的main_pr.yml示例

name: CI
on:
  pull_request:
    types:
      - opened
      - closed
      - synchronize
    branches:
      - main

jobs:
  callAffectedApps:
    uses: ./.github/workflows/common/affected.yml
    outputs:
      affected: ${{ steps.affectedApps.outputs.AFFECTED_APPS }}
  
  is_even_buid:
    runs-on: ubuntu-latest
    needs: callAffectedApps
    if: contains(needs.callAffectedApps.outputs.affected, 'is-event')
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      
      - run: |
          ls

适配的affected.yml示例

确保被调用的工作流包含必要的workflow_call配置和checkout步骤:

# .github/workflows/common/affected.yml
name: Affected Apps Check
on:
  workflow_call:
    outputs:
      AFFECTED_APPS:
        description: "List of affected applications"
        value: ${{ steps.affectedApps.outputs.AFFECTED_APPS }}

jobs:
  checkAffected:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0  # 若需对比分支差异,需全量克隆仓库

      - name: Detect affected apps
        id: affectedApps
        run: |
          # 此处添加检测受影响应用的逻辑
          echo "AFFECTED_APPS=is-event" >> $GITHUB_OUTPUT

内容的提问来源于stack exchange,提问作者Joey Yi Zhao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 18:45:54