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

如何通过Github Actions强制所有子模块存在README.md?

实现GitHub Actions检查所有子模块的README.md存在性

因为现成的andstor/file-existence-action无法满足「检查所有子模块都必须存在README.md」的要求,你可以用自定义Bash脚本结合GitHub Actions来实现,具体配置如下:

完整Workflow配置

name: Check Submodule READMEs
on: [push]

jobs:
  verify-readmes:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取代码及所有子模块
        uses: actions/checkout@v4
        with:
          submodules: recursive # 若无需嵌套子模块,可替换为true

      - name: 检查所有子模块是否包含README.md
        run: |
          # 遍历仓库中所有子模块的相对路径
          git submodule foreach --quiet 'echo $path' | while read -r sub_dir; do
            # 检查目标路径下是否存在README.md
            if [ ! -f "${sub_dir}/README.md" ]; then
              echo "❌ 错误:子模块 ${sub_dir} 缺失README.md"
              exit 1
            fi
          done
          echo "✅ 所有子模块均包含README.md"

关键逻辑说明

  • git submodule foreach --quiet 'echo $path':输出所有子模块的相对路径,避免打印多余的日志信息
  • 循环遍历每个子模块路径,通过[ ! -f ]判断文件是否存在,若不存在则直接退出并返回错误码1,触发Action失败
  • 如果需要兼容不区分大小写的README文件名(如Readme.md、readme.md),可以在脚本开头添加shopt -s nocaseglob开启不区分大小写匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:05:12