我需要在声明式管道中启动一组动态测试。 为了更好的可视化目的,我想为每个测试创建一个阶段。 有没有办法做到这一点?我可以在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