Jenkins 2作业:仅处理下载时更改的文件

Jenkins 2作业:仅处理下载时更改的文件,jenkins,groovy,Jenkins,Groovy,我有一个Jenkins 2管道作业,它下载一个文件并执行一些处理。作业会定期触发,因此有时下载的文件不会更改 现在的问题是:如何检查文件是否已从上次运行更改为停止并避免处理?另一个困难是,每次下载时文件名都会更改:-( 问候你,克里斯蒂安我就是这样做的: 首先,计算CRC,将其保存在一个文件中并存档。在我的情况下,指纹识别不起作用,因为我想检查一个动态生成的zip文件,该文件始终具有不同的CRC。因此,我提取我感兴趣的文件的CRC,并将其存储在一个文件CRC.txt中。在大多数情况下,这可能有些

我有一个Jenkins 2管道作业,它下载一个文件并执行一些处理。作业会定期触发,因此有时下载的文件不会更改

现在的问题是:如何检查文件是否已从上次运行更改为停止并避免处理?另一个困难是,每次下载时文件名都会更改:-(

问候你,克里斯蒂安我就是这样做的:

首先,计算CRC,将其保存在一个文件中并存档。在我的情况下,指纹识别不起作用,因为我想检查一个动态生成的zip文件,该文件始终具有不同的CRC。因此,我提取我感兴趣的文件的CRC,并将其存储在一个文件
CRC.txt
中。在大多数情况下,这可能有些过分

def currentCrc=readFile('crc.txt')
archiveArtifacts工件:“crc.txt”,指纹:true
然后,我用
crc.txt
文件搜索上一次成功构建,并读取文件内容:

//查找上次成功的生成
def lastSuccessfulBuild=currentBuild.getPreviousBuild()
而(lastSuccessfulBuild&(lastSuccessfulBuild.currentResult!='SUCCESS')){
lastSuccessfulBuild=lastSuccessfulBuild.getPreviousBuild()
}
//并读取此版本的“crc.txt”文件
def build=lastSuccessfulBuild?.getRawBuild()
def artifact=build.getArtifacts().find{it.fileName=='crc.txt'}
def uri=build.artifactManager.root().child(artifact.relativePath.toURI())
def oldCrc=uri.toURL().text
最后,我比较两个值(当前crc和上次成功构建的crc:

if(oldCrc!=currentCrc){
println“***中止作业,因为文件未更改。”
返回
}

您的意思是管道作业,对吗?当您说文件名更改时,您是指版本号还是名称本身完全更改?下载文件的文件名更改(我称为返回文件的REST服务)。下载文件的作业是管道作业。下载的文件是文本、rar、zip文件??文件的下载位置是固定的,并且该位置是否存在其他文件??它是在当前构建工作区的子目录中下载的文本文件。位置是固定的。因此,您必须基本上读取目录文件中的内容……文件中是否有什么东西可以将其与旧文件区分开来?