我想从头到尾得到一份连锁工作。但是这些作业也需要单独执行。
我想要一个计划的构建,并且需要将那些工作链接在一起。
手动运行时,不要以级联模式运行作业。
我不想单击“配置”,删除下游运行并在手动执行的情况下重新添加下游。
什么是最佳解决方案?
谢谢。
答案 0 :(得分:1)
所以可以做到这一点,但是我建议将下面列出的功能放在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() }
}