mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
Only run xpack siem cypress in PRs when there are siem changes (#60661)
This commit is contained in:
parent
c22dbb1764
commit
42539a56eb
3 changed files with 72 additions and 3 deletions
7
Jenkinsfile
vendored
7
Jenkinsfile
vendored
|
@ -40,7 +40,12 @@ kibanaPipeline(timeoutMinutes: 135, checkPrChanges: true) {
|
|||
'xpack-ciGroup9': kibanaPipeline.xpackCiGroupProcess(9),
|
||||
'xpack-ciGroup10': kibanaPipeline.xpackCiGroupProcess(10),
|
||||
'xpack-accessibility': kibanaPipeline.functionalTestProcess('xpack-accessibility', './test/scripts/jenkins_xpack_accessibility.sh'),
|
||||
'xpack-siemCypress': kibanaPipeline.functionalTestProcess('xpack-siemCypress', './test/scripts/jenkins_siem_cypress.sh'),
|
||||
'xpack-siemCypress': { processNumber ->
|
||||
whenChanged(['x-pack/legacy/plugins/siem/', 'x-pack/test/siem_cypress/']) {
|
||||
kibanaPipeline.functionalTestProcess('xpack-siemCypress', './test/scripts/jenkins_siem_cypress.sh')(processNumber)
|
||||
}
|
||||
},
|
||||
|
||||
// 'xpack-visualRegression': kibanaPipeline.functionalTestProcess('xpack-visualRegression', './test/scripts/jenkins_xpack_visual_regression.sh'),
|
||||
]),
|
||||
])
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
import groovy.transform.Field
|
||||
|
||||
public static @Field PR_CHANGES_CACHE = null
|
||||
|
||||
def getSkippablePaths() {
|
||||
return [
|
||||
|
@ -36,9 +39,13 @@ def areChangesSkippable() {
|
|||
}
|
||||
|
||||
def getChanges() {
|
||||
withGithubCredentials {
|
||||
return githubPrs.getChanges(env.ghprbPullId)
|
||||
if (!PR_CHANGES_CACHE && env.ghprbPullId) {
|
||||
withGithubCredentials {
|
||||
PR_CHANGES_CACHE = githubPrs.getChanges(env.ghprbPullId)
|
||||
}
|
||||
}
|
||||
|
||||
return PR_CHANGES_CACHE
|
||||
}
|
||||
|
||||
def getChangedFiles() {
|
||||
|
|
57
vars/whenChanged.groovy
Normal file
57
vars/whenChanged.groovy
Normal file
|
@ -0,0 +1,57 @@
|
|||
/*
|
||||
whenChanged('some/path') { yourCode() } can be used to execute pipeline code in PRs only when changes are detected on paths that you specify.
|
||||
The specified code blocks will also always be executed during the non-PR jobs for tracked branches.
|
||||
|
||||
You have the option of passing in path prefixes, or regexes. Single or multiple.
|
||||
Path specifications are NOT globby, they are only prefixes.
|
||||
Specifying multiple will treat them as ORs.
|
||||
|
||||
Example Usages:
|
||||
whenChanged('a/path/prefix/') { someCode() }
|
||||
whenChanged(startsWith: 'a/path/prefix/') { someCode() } // Same as above
|
||||
whenChanged(['prefix1/', 'prefix2/']) { someCode() }
|
||||
whenChanged(regex: /\.test\.js$/) { someCode() }
|
||||
whenChanged(regex: [/abc/, /xyz/]) { someCode() }
|
||||
*/
|
||||
|
||||
def call(String startsWithString, Closure closure) {
|
||||
return whenChanged([ startsWith: startsWithString ], closure)
|
||||
}
|
||||
|
||||
def call(List<String> startsWithStrings, Closure closure) {
|
||||
return whenChanged([ startsWith: startsWithStrings ], closure)
|
||||
}
|
||||
|
||||
def call(Map params, Closure closure) {
|
||||
if (!githubPr.isPr()) {
|
||||
return closure()
|
||||
}
|
||||
|
||||
def files = prChanges.getChangedFiles()
|
||||
def hasMatch = false
|
||||
|
||||
if (params.regex) {
|
||||
params.regex = [] + params.regex
|
||||
print "Checking PR for changes that match: ${params.regex.join(', ')}"
|
||||
hasMatch = !!files.find { file ->
|
||||
params.regex.find { regex -> file =~ regex }
|
||||
}
|
||||
}
|
||||
|
||||
if (!hasMatch && params.startsWith) {
|
||||
params.startsWith = [] + params.startsWith
|
||||
print "Checking PR for changes that start with: ${params.startsWith.join(', ')}"
|
||||
hasMatch = !!files.find { file ->
|
||||
params.startsWith.find { str -> file.startsWith(str) }
|
||||
}
|
||||
}
|
||||
|
||||
if (hasMatch) {
|
||||
print "Changes found, executing pipeline."
|
||||
closure()
|
||||
} else {
|
||||
print "No changes found, skipping."
|
||||
}
|
||||
}
|
||||
|
||||
return this
|
Loading…
Add table
Add a link
Reference in a new issue