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

GitHub Actions 私有Composite Action POST阶段执行失败问题咨询

问题描述

拉取包含多个action的私有仓库时,在POST阶段会执行失败,报错信息如下:

Error: Can't find 'action.yml', 'action.yaml' or 'Dockerfile' under '/home/runner/work/testjerome/testjerome/.github/actions/package_and_push_to_ECR'. Did you forget to run actions/checkout before running your local action?
复现步骤
- name: Check out main repository
  uses: actions/checkout@v2

- name: Get composite run steps repository
  uses: actions/checkout@v2
  with:
    repository: myorg/myaction
    # Select revision
    ref: v1.0.0
    # Personal access token to check out private repository
    token: ${{ secrets.PAT_TOKEN }}
    # Indicate where to check action out to
    path: .github/actions

- name: Run action from private repo
  uses: ./.github/actions/myAction

该示例假设myorg/myaction是GitHub私有仓库,仓库内结构为myAction目录下存放action.yml文件。

咨询问题

如何在同一个仓库中存放多个action的前提下规避该问题?已知可以为每个action单独创建仓库,但该方案管理过于混乱,不考虑采用。

解决方案

该报错本质是GitHub Runner执行POST步骤时的路径校验异常,以及多action私有仓拉取后的路径冲突问题,可按以下方案解决,无需拆分单个action为独立仓库:

方案1:调整拉取路径与调用规则(最稳妥)

  1. 私有多action仓保持现有结构,根目录下每个子文件夹对应一个action,每个子文件夹内存放action.yml即可
  2. 工作流中拉取私有仓时,指定路径为独立目录,不要和主仓库的.github/actions目录混用,避免覆盖或清理冲突,示例如下:
- name: 检出主仓库
  uses: actions/checkout@v4

- name: 检出私有多action仓库
  uses: actions/checkout@v4
  with:
    repository: myorg/myaction
    ref: v1.0.0
    token: ${{ secrets.PAT_TOKEN }}
    # 拉取到独立自定义目录,不要直接放到.github/actions
    path: my-custom-actions

- name: 调用私有仓中的myAction
  uses: ./my-custom-actions/myAction

方案2:必须使用.github/actions目录的场景

在私有仓的checkout步骤添加clean: false参数,关闭checkout动作的自动清理逻辑,避免目标路径下的文件被意外删除:

- name: 检出私有多action仓库
  uses: actions/checkout@v4
  with:
    repository: myorg/myaction
    ref: v1.0.0
    token: ${{ secrets.PAT_TOKEN }}
    path: .github/actions
    # 关闭自动清理,避免已拉取的action文件被删除
    clean: false

优化建议

如果私有仓中action数量较多,可添加sparse-checkout参数,仅拉取需要用到的action对应目录,减少拉取体积,提升执行效率:

- name: 检出私有多action仓库
  uses: actions/checkout@v4
  with:
    repository: myorg/myaction
    ref: v1.0.0
    token: ${{ secrets.PAT_TOKEN }}
    path: my-custom-actions
    sparse-checkout: |
      myAction
      other-action-you-need

内容的提问来源于stack exchange,提问作者jerome

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:39:01