我想从头到尾得到一个链式的工作。但这些作业也需要单独执行。
我想要一个预定的构建,并且需要链接这些作业。
手动运行时,不在级联模式下运行作业。
我不想单击配置,删除下游运行并在手动执行的情况下重新添加下游。
最好的解决方案是什么?
提前谢谢。
所以这是可以做到的,但是我建议将下面概述的函数放在 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() }
}