Can I create dynamically stages in a Jenkins pipeline?

david.perez picture david.perez · Mar 16, 2017 · Viewed 52.7k times · Source

I need to launch a dynamic set of tests in a declarative pipeline. For better visualization purposes, I'd like to create a stage for each test. Is there a way to do so?

The only way to create a stage I know is:

stage('foo') {
   ...
}

I've seen this example, but I it does not use declarative syntax.

Answer

david.perez picture david.perez · Mar 16, 2017

Use the scripted syntax that allows more flexibility than the declarative syntax, even though the declarative is more documented and recommended.

For example stages can be created in a loop:

def tests = params.Tests.split(',')
for (int i = 0; i < tests.length; i++) {
    stage("Test ${tests[i]}") {
        sh '....'
    }
}