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

Jenkins Git插件未拉取子模块提交,子模块变更未显示在构建变更日志

结论

原生Jenkins GitSCM插件不支持直接将子模块内部的提交记录纳入构建变更日志。你当前配置中开启的recursiveSubmodules、trackingSubmodules参数仅控制子模块的拉取更新逻辑,不涉及子模块内部提交的变更日志抓取。

可行替代解决方案
  • 方案1:自定义脚本抓取子模块变更追加到构建展示位
    在checkout步骤完成后,新增Groovy脚本对比本次构建与上一次成功构建的子模块commit差异,手动抓取子模块提交记录,追加到构建描述或自定义变更日志展示区域,参考实现代码:
    // checkout步骤执行完成后运行该段逻辑
    def job = Jenkins.instance.getItemByFullName(env.JOB_NAME)
    def lastSuccessBuild = job.getLastSuccessfulBuild()
    if (lastSuccessBuild) {
      // 读取上一次构建保存的子模块commit哈希映射
      def prevSubmoduleCommits = lastSuccessBuild.buildVariables.getOrDefault('SUBMODULE_COMMIT_MAP', [:])
      def currSubmoduleCommits = [:]
      
      // 读取当前所有子模块的名称和对应commit哈希
      sh 'git submodule foreach --quiet \'echo "$name $sha1"\' > .submodule_commits.tmp'
      def submoduleLines = readFile('.submodule_commits.tmp').trim().split('\n')
      submoduleLines.each { line ->
        def (submoduleName, currSha) = line.split()
        currSubmoduleCommits[submoduleName] = currSha
        
        // 对比两次构建的子模块commit,有差异则抓取提交日志
        if (prevSubmoduleCommits[submoduleName] != currSha) {
          def subChangeLog = sh(
            script: "cd ${submoduleName} && git log --pretty=format:'%h | %s | 提交人:%an' ${prevSubmoduleCommits[submoduleName]}..${currSha}",
            returnStdout: true
          ).trim()
          if (subChangeLog) {
            // 将子模块变更追加到构建描述中展示
            currentBuild.description += """
            <br>
            <b>子模块【${submoduleName}】变更记录:</b><br>
            ${subChangeLog.replace('\n', '<br>')}
            <br>
            """
          }
        }
      }
      // 保存本次子模块commit映射到环境变量,供下次构建对比使用
      env.SUBMODULE_COMMIT_MAP = currSubmoduleCommits.toString()
    }
    
  • 方案2:使用Multiple SCMs插件统一收集变更
    安装Jenkins的Multiple SCMs插件,将父仓库和所有子模块都作为独立的Git仓库配置到SCM列表中,每个子模块配置对应的仓库地址、拉取到本地的相对路径,插件会自动合并所有配置仓库的变更记录到构建的官方变更日志中。该方案适合子模块数量少且变动不频繁的场景,需要为每个子模块单独配置访问凭证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:09:02