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

Jenkins获取仅新增/修改文件列表 排除已删除文件的实现方法

实现方案

完全可以通过判断Git文件变更状态完成筛选,你使用的Jenkins 2.289.2版本搭配官方Git插件时,currentBuild.changeSets返回的变更文件对象自带editType属性,可直接用于区分变更类型:

  • 新增文件对应状态:ADD
  • 修改文件对应状态:EDIT
  • 删除文件对应状态:DELETE

你只需要在原有逻辑中增加状态判断,过滤掉状态为DELETE的文件即可,修改后的函数如下:

def getChangedFiles() {
    def fileArray = []
    def changeLogSets = currentBuild.changeSets
    for (int i = 0; i < changeLogSets.size(); i++) {
        def entries = changeLogSets[i].items
        for (int j = 0; j < entries.length; j++) {
            def entry = entries[j]
            def files = new ArrayList(entry.affectedFiles)
            for (int k = 0; k < files.size(); k++) {
                def file = files[k]
                // 过滤掉已删除的文件
                if (file.editType.name() != 'DELETE') {
                    fileArray.add("${file.path}")
                }
            }
        }
    }
    return fileArray
}

如果你的编码规范检测只需要覆盖新增和修改的文件,也可以把判断逻辑改成主动匹配ADD和EDIT状态,避免特殊场景下其他未知状态的文件被纳入检测范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:15:03