通过GitHub Actions访问Git子模块文件失败的问题排查
GitHub Actions构建Eleventy站点时子模块内容无法访问
场景
我在mysite_11ty仓库搭建Eleventy静态站点,把Markdown文件、数据、图片等内容单独放在mysite_content仓库,并将其设为mysite_11ty的Git子模块。本地环境下,通过rsync同步内容文件到Eleventy构建目录后能正常构建,但在GitHub Actions中执行构建时失败。
相关配置文件
.github/workflows/main.yml
jobs: build: runs-on: ubuntu-latest steps: # Checks-out your repository under $GITHUB_WORKSPACE, # so your workflow can access it - uses: actions/checkout@main - name: Use Node.js 20.xw uses: actions/setup-node@v3 with: node-version: 20.x - name: Install packages run: npm ci - name: Run npm build run: npm run build
package.json
{ "scripts": { "build": "./scripts/set_up_submodule_files_github_actions.sh && eleventy" }, <etc.> }
scripts/set_up_submodule_files_github_actions.sh
echo "Updating content submodule" git submodule set-branch -b main mysite_content echo "Syncing markdown" rsync -avmq \ --include='*.md' \ -f 'hide,! */' \ mysite_content/* .
错误信息
rsync: [sender] change_dir "/home/runner/work/mysite_11ty/mysite_11ty/mysite_content/" failed: No such file or directory (2)
已排查操作
- 在构建脚本中加入
ls命令,确认路径与本地一致,输出显示mysite_content目录存在 - 在
mysite_content仓库的Settings>Actions中配置允许组织内的Actions访问
正确解决方案
直接在GitHub Action的检出步骤中处理子模块,无需在构建脚本中操作。修改actions/checkout步骤如下:
- uses: actions/checkout@v4 with: submodules: 'recursive' token: ${{ secrets.MY_SUBMODULE_PAT }}
内容的提问来源于stack exchange,提问作者AaronM
相关产品推荐
相关产品推荐

