jenkinsjenkins-pipeline

Can I create dynamically stages in a Jenkins pipeline?


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.


Solution

  • 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 '....'
        }
    }