Я новичок в groovy, и я написал этот сценарий для конвейерного задания Jenkins , которое работает. Сценарий действует как планировщик, поэтому он проверяет файлы, которые были изменены в последнем коммите, а затем сравниваетс заранее заданными путями, так что ut будет планировать другую работу для этого конкретного компонента.
Но я думаю, что он будет расти все больше и больше, и я почти уверен, что это не самый эффективный способ сделатьит.
stage("check file paths that changed in this build") {
ChangedFilesList = gitfunction.getChangedFilesList(changedFiles)
ChangedFilesList.each {
println "Changes in file: ${it}"
def file = "${it}"
if (file ==~ /(?s).*component\/.*/ || file ==~ /(?s).*component0\/.*/){
print "scheduling component tests for component0"
build job: "Component_test_CI", parameters: [[$class: 'StringParameterValue', name: "SERVICE_NAME", value: "component0"]]
description = "component0"
} else if (file ==~ /(?s).*component1\/.*/){
print "scheduling component tests for component1"
build job: "Component_test_CI", parameters: [[$class: 'StringParameterValue', name: "SERVICE_NAME", value: "component1"]]
description = "component1"
} else if (file ==~ /(?s).*component1\/.*/){
print "scheduling component tests for component1"
build job: "Component_test_CI", parameters: [[$class: 'StringParameterValue', name: "SERVICE_NAME", value: "component1"]]
description = "component1"
} else if (file ==~ /(?s).*component2\/.*/){
print "scheduling component tests for component2"
build job: "Component_test_CI", parameters: [[$class: 'StringParameterValue', name: "SERVICE_NAME", value: "component2"]]
description = "component2"
} else if (file ==~ /(?s).*component3\/.*/){
print "scheduling component tests for component3"
build job: "Component_test_CI", parameters: [[$class: 'StringParameterValue', name: "SERVICE_NAME", value: "component3"]]
description = "component3"
} else if (file ==~ /(?s).*component4\/.*/){
print "scheduling component tests for component4"
build job: "Component_test_CI", parameters: [[$class: 'StringParameterValue', name: "SERVICE_NAME", value: "component4"]]
description = "component4"
} else if (file ==~ /(?s).*component5\/.*/){
print "scheduling component tests for component5"
build job: "Component_test_CI", parameters: [[$class: 'StringParameterValue', name: "SERVICE_NAME", value: "component5"]]
description = "component5"
} else {
sh "printf \"\\e[95m----------------- no specific module was changed - Will not trigger Component_test_CI job --------------------\\e[0m\\n\""
}
}
}