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

Github Action无法检出动作仓库子模块 求解决方法

GitHub Actions 自定义动作子模块缺失问题解决办法

问题背景

使用包含子模块的自定义动作仓库时,GitHub Actions仅检出动作的文件,不会拉取子模块内容,且动作目录下没有.git文件夹,常规git submodule update命令无法执行,导致子模块目录为空。

解决方法

方法1:在动作内部手动克隆子模块

直接在动作的步骤里添加克隆命令,把子模块仓库内容拉到对应的空文件夹中。修改动作仓库的action.yml:

name: "Submodule Test"
description: ""

runs:
  using: "composite"
  steps:
    - name: 拉取子模块内容
      shell: bash
      run: |
        # 替换为你的子模块仓库HTTPS地址和目标路径
        git clone 子模块仓库地址 ${{ github.action_path }}/submodule
    - name: execute test
      shell: cmd
      run: |
        tree /F /A ${{ github.action_path }}

如果用Windows cmd环境,把克隆命令改成:

git clone 子模块仓库地址 %GITHUB_ACTION_PATH%\submodule

优点:无需修改调用动作的workflow,改动集中在动作本身;缺点:子模块更新时需要同步修改克隆地址或指定分支。

方法2:将动作改为Docker容器类型

把自定义动作做成Docker容器动作,构建镜像时将子模块内容一并打包进去,这样Actions运行时直接使用完整镜像,不会出现子模块缺失。

  1. 在动作仓库根目录创建Dockerfile:
FROM ubuntu:latest # 可替换为你需要的系统镜像
RUN apt-get update && apt-get install -y git
WORKDIR /action
# 克隆动作仓库并拉取所有子模块
RUN git clone --recurse-submodules 动作仓库地址 .
# 添加动作执行的命令(根据你的实际需求修改)
CMD ["bash", "./your-execution-script.sh"]
  1. 修改action.yml为Docker类型:
name: "Submodule Test"
description: ""
runs:
  using: "docker"
  image: "Dockerfile"

优点:环境一致性强,子模块内容固化在镜像中;缺点:需要维护Docker镜像,构建和发布流程稍复杂。

方法3:在Workflow中完整克隆动作仓库(带子模块)

不直接用uses:调用动作,先克隆动作仓库并拉取子模块,再本地调用动作。修改调用端的.github/workflows/test.yml:

name: Submodule Test
on:
  workflow_dispatch

jobs:
  Pyinstaller:
    runs-on: windows-latest
    steps:
      - name: 克隆动作仓库并拉取子模块
        uses: actions/checkout@v4
        with:
          repository: 动作仓库全名(如用户名/仓库名)
          ref: main # 替换为你需要的分支
          submodules: true
          path: ./actions_submodule_main # 克隆到本地的路径
      - name: 执行动作
        uses: ./actions_submodule_main

优点:灵活控制子模块拉取时机,支持私有子模块(可配合actions/checkout的token参数传入权限令牌);缺点:需要修改调用动作的workflow代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 17:45:14