Так что это можно сделать, однако я рекомендую поместить функции, которые я описал ниже, в общую библиотеку Jenkins.Выполнение этого способа приведет к получению как минимум 4 утверждений безопасности песочницы, что потребует вашего администратора jenkins.1 из которых предупреждает, что это уязвимость системы безопасности ... поэтому оцените воздействие на вашу среду и свой профиль риска.
#!groovy
List jobparameters = [
booleanParam(name: 'CHECKBOX', defaultValue: true, description: 'Tick a checkbox'),
string(name: 'STRING', defaultValue: 'stringhere', description: 'Enter a string')
]
properties([
pipelineTriggers([cron('''TZ=Australia/Victoria
H 1 * * *''')]),
buildDiscarder(logRotator(numToKeepStr: '20')),
parameters(jobparameters),
])
stage('Stage') {
node {
// do something always
echo(params.STRING)
}
}
if ( hasAutomatedCauses() ) {
stage('folder1/reponame/branch') {
//do something conditionally
build(job: "folder1/reponame/branch", parameters: jobparameters, propagate: true)
}
} else {
stage('folder1/reponame/branch') {
node {
echo("Not running downstream job")
}
}
}
/**
* Checks if job causes contain automated causes
* Return true if automated cause found
*
* @return boolean
*/
boolean hasAutomatedCauses() {
List automatedCauses = ['UpstreamCause', 'TimerTriggerCause']
List intersection = []
intersection = automatedCauses.intersect(getCauses())
// if no automated causes are found means intersection is empty and then return false
return !intersection.isEmpty()
}
/**
* Retrieves list of causes that generated job execution
*
* @return list
*/
List getCauses() {
return currentBuild.rawBuild.getCauses().collect { it.getClass().getCanonicalName().tokenize('.').last() }
}