我需要在聲明式管道中啓動一組動態測試。 爲了更好的可視化目的,我想爲每個測試創建一個階段。 有沒有辦法做到這一點?我可以在Jenkins管道中創建動態階段嗎?
創建一個階段,我所知道的唯一方法是:
stage('foo') {
...
}
我見過this example,但我不使用聲明的語法。
我需要在聲明式管道中啓動一組動態測試。 爲了更好的可視化目的,我想爲每個測試創建一個階段。 有沒有辦法做到這一點?我可以在Jenkins管道中創建動態階段嗎?
創建一個階段,我所知道的唯一方法是:
stage('foo') {
...
}
我見過this example,但我不使用聲明的語法。
使用允許比聲明性語法更具靈活性的腳本語法,即使聲明性更多地記錄和推薦。
階段,例如可以在一個循環中創建:
def tests = params.Tests.split(',')
for (int i = 0; i < tests.length; i++) {
stage("Test ${testd[i]}") {
sh '....'
}
}
我使用它來生成我的階段,該階段包含他們詹金斯工作。 build_list是我想要從主Jenkins作業中觸發的Jenkins作業的列表,但每個作業都有一個觸發階段。
build_list = ['job1', 'job2', 'job3']
for(int i=0; i < build_list.size(); i++) {
stage(build_list[i]){
build job: build_list[i], propagate: false
}
}
你可能想看看this example - 你可以有一個函數返回一個閉合件應該能夠有一個階段吧。
此代碼顯示的概念,但沒有階段。
def transformDeployBuildStep(OS) {
return {
node ('master') {
wrap([$class: 'TimestamperBuildWrapper']) {
...
} } // ts/node
} // closure
} // transformDeployBuildStep
stage("Yum Deploy") {
stepsForParallel = [:]
for (int i = 0; i < TargetOSs.size(); i++) {
def s = TargetOSs.get(i)
def stepName = "CentOS ${s} Deployment"
stepsForParallel[stepName] = transformDeployBuildStep(s)
}
stepsForParallel['failFast'] = false
parallel stepsForParallel
} // stage