Jenkins构建过程中如何获取本次构建包含的提交记录信息
Jenkins CI 拉取本次构建提交记录的解决方案
方案1:使用内置能力+原生Git命令(无需额外插件)
Jenkins官方Git插件默认会为所有构建任务注入专属环境变量,无需额外配置即可直接调用:
GIT_COMMIT:本次构建对应的最新提交哈希值GIT_PREVIOUS_SUCCESSFUL_COMMIT:当前分支上一次构建成功的提交哈希值,master/main等主干分支也可正常识别
你可以直接用以下命令获取两次构建之间的所有变更文件列表:
git diff --name-only $GIT_PREVIOUS_SUCCESSFUL_COMMIT $GIT_COMMIT
如果是当前分支的首次构建,GIT_PREVIOUS_SUCCESSFUL_COMMIT 会返回全0的空哈希,此时可以用以下命令获取本次提交的变更内容:
git show --name-only $GIT_COMMIT
拿到变更文件列表后,你可以自行过滤对应文件夹路径,判断后续要执行的构建逻辑,该方案同时兼容PR构建和主干分支构建场景,无需单独维护两套命令。
方案2:使用Jenkins插件降低实现成本
如果不想自己编写Git结果解析逻辑,可以直接使用官方插件实现需求:
- Changeset Plugin:插件会自动聚合本次构建包含的所有提交和变更文件,支持直接按路径规则匹配变更,比如你要判断
src/app目录是否有修改,只需配置对应路径规则即可直接拿到布尔结果。如果使用声明式流水线,还可以直接在when条件中调用插件返回的结果,直接实现「对应目录变更才执行对应步骤」的逻辑。 - Git Changelog Plugin:如果你需要完整的提交记录(包含提交说明、作者、提交时间等信息),可以使用这个插件直接生成格式化的提交日志,适合需要做构建通知、发版记录的场景。
内容的提问来源于stack exchange,提问作者Budda
相关产品推荐
相关产品推荐

