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

GitHub Action中公开仓库子模块文件不可见问题求助

问题解决方法

核心问题分析

  • 子模块拉取配置位置错误:你将submodules: true参数加到了setup-java步骤中,但该参数属于actions/checkout专属配置,setup-java不识别此参数,导致子模块完全没被拉取。
  • SSH地址权限不兼容:子模块使用的git@github.com:rxue/dictionary-jpa.git是SSH协议地址,GitHub Actions默认使用的GITHUB_TOKEN仅支持HTTPS协议拉取,无法通过SSH获取子模块内容,这也是目录为空的关键原因。

修复方案

方案一:改用HTTPS地址拉取子模块(推荐)

修改.gitmodules文件中的子模块URL为HTTPS格式:

[submodule "dictionary-jpa"]
    path = dictionary-jpa
    url = https://github.com/rxue/dictionary-jpa.git

执行本地同步并提交修改:

git submodule sync
git commit -m "Update submodule URL to HTTPS"
git push

方案二:配置Checkout步骤适配SSH拉取

若不想修改URL,需为actions/checkout配置SSH密钥(需额外生成并存储密钥到仓库 Secrets),或调整Checkout参数:

修正后的GitHub Action脚本

name: Build

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write

    steps:
    - name: Checkout code with submodules
      uses: actions/checkout@v3
      with:
        submodules: true  # 子模块拉取参数必须放在checkout步骤
        persist-credentials: true  # 保留凭证用于HTTPS协议拉取子模块
    - name: Set up JDK 17
      uses: actions/setup-java@v3
      with:
        java-version: '17'
        distribution: 'temurin'
        # settings-path: ${{ github.workspace }} # 按需启用该配置
    - name: List submodule content
      run: ls -al dictionary-jpa
    - name: Build submodule
      run: mvn -B compile --file dictionary-jpa/pom.xml

验证要点

  • 确认submodules: true(若有嵌套子模块则用submodules: recursive)配置在actions/checkout步骤内
  • 子模块URL协议需与GitHub Actions使用的凭证匹配:HTTPS用默认GITHUB_TOKEN,SSH需配置对应私钥

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:33:10