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

如何确定GitHub仓库中触发Jenkins自动构建的变更文件?

如何获取触发Jenkins构建的GitHub变更文件

完全可以拿到,不需要额外调用外部接口,以下是两种最常用的实现方式,适配不同的Jenkins项目类型。

Pipeline项目(声明式/脚本式)

安装Git插件后的Jenkins自带变更集统计能力,直接通过内置的currentBuild.changeSets对象就能遍历本次构建关联的所有改动文件,不需要额外写Git命令:

pipeline {
    agent any
    stages {
        stage('校验改动文件') {
            steps {
                script {
                    def changedFileList = []
                    // 遍历本次构建关联的所有提交记录
                    currentBuild.changeSets.each { changeLog ->
                        changeLog.each { commitEntry ->
                            // 遍历单个提交里的所有改动文件
                            commitEntry.affectedFiles.each { file ->
                                changedFileList.add(file.path)
                                echo "检测到改动文件:${file.path},改动类型:${file.editType.name}"
                            }
                        }
                    }
                    // 针对目标文件做判断
                    if (changedFileList.contains('test.txt')) {
                        echo "本次构建包含test.txt的变更,执行对应构建逻辑"
                        // 此处添加test.txt变更后需要运行的步骤
                    } else {
                        echo "本次构建未改动test.txt,跳过对应步骤"
                    }
                }
            }
        }
        // 后续添加常规构建步骤
    }
}

这个方法会自动汇总本次触发构建的所有提交里的文件改动,哪怕一次push带了多个commit也不会漏统计。

自由风格项目

如果用的是传统自由风格Job,直接在构建步骤里加Shell执行步骤,通过Git命令对比本次构建commit和上一次构建commit的差异即可拿到改动文件列表:

# 获取当前分支上一次构建的commit哈希
LAST_BUILD_COMMIT=$(git rev-parse HEAD~1)
# 输出两个commit之间的所有差异文件名
CHANGED_FILES=$(git diff --name-only $LAST_BUILD_COMMIT $GIT_COMMIT)

for singleFile in $CHANGED_FILES; do
  echo "改动文件:$singleFile"
  if [ "$singleFile" = "test.txt" ]; then
    echo "检测到test.txt改动,触发对应逻辑"
  fi
done

避坑说明

  • 不建议直接解析GitHub webhook传过来的payload里的文件列表:如果出现webhook重试、多个提交合并触发一次构建的场景,payload里的文件列表可能不全,用Jenkins内置变更集或者本地Git diff拿到的结果最准确。
  • 如果Job开启了PR合并后构建的选项,优先用Git diff的方式获取改动列表,避免内置changeSets统计的是PR源分支的改动,和合并后实际代码不一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:24:41