我有一个Jenkins 2 Pipeline作业,可以下载文件并执行一些处理。该作业会定期触发,因此有时下载的文件没有更改。
现在的问题是:如何检查文件是否从上次运行更改为停止并避免处理?另一个困难是,每次下载时文件名都会更改:-(
亲切的问候,基督徒
答案 0 :(得分:0)
这是我的方法:
首先,计算CRC,将其保存在文件中并存档。在我的情况下,指纹识别不起作用,因为我想检查一个动态生成的zip文件,该zip文件始终具有不同的CRC。因此,我提取了我感兴趣的文件的CRC,并将它们存储在文件crc.txt
中。在大多数情况下,这可能会过分杀人。
def currentCrc = readFile('crc.txt')
archiveArtifacts artifacts: 'crc.txt', fingerprint: true
然后,我使用crc.txt
文件搜索最后一次成功的构建,并读取文件的内容:
// find last successful build
def lastSuccessfulBuild = currentBuild.getPreviousBuild()
while (lastSuccessfulBuild && (lastSuccessfulBuild.currentResult != 'SUCCESS')) {
lastSuccessfulBuild = lastSuccessfulBuild.getPreviousBuild()
}
// and read the 'crc.txt' file of this build
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 "*** Abort job, because file has not changed."
return
}