53 lines
1 KiB
Groovy
53 lines
1 KiB
Groovy
|
|
||
|
def getSkippablePaths() {
|
||
|
return [
|
||
|
/^docs\//,
|
||
|
/^rfcs\//,
|
||
|
/^.ci\/.+\.yml$/,
|
||
|
/^\.github\//,
|
||
|
/\.md$/,
|
||
|
]
|
||
|
}
|
||
|
|
||
|
def areChangesSkippable() {
|
||
|
if (!githubPr.isPr()) {
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
def skippablePaths = getSkippablePaths()
|
||
|
def files = getChangedFiles()
|
||
|
|
||
|
// 3000 is the max files GH API will return
|
||
|
if (files.size() >= 3000) {
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
files = files.findAll { file ->
|
||
|
return !skippablePaths.find { regex -> file =~ regex}
|
||
|
}
|
||
|
|
||
|
return files.size() < 1
|
||
|
} catch (ex) {
|
||
|
buildUtils.printStacktrace(ex)
|
||
|
print "Error while checking to see if CI is skippable based on changes. Will run CI."
|
||
|
return false
|
||
|
}
|
||
|
}
|
||
|
|
||
|
def getChanges() {
|
||
|
withGithubCredentials {
|
||
|
return githubPrs.getChanges(env.ghprbPullId)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
def getChangedFiles() {
|
||
|
def changes = getChanges()
|
||
|
def changedFiles = changes.collect { it.filename }
|
||
|
def renamedFiles = changes.collect { it.previousFilename }.findAll { it }
|
||
|
|
||
|
return changedFiles + renamedFiles
|
||
|
}
|
||
|
|
||
|
return this
|