Anshika Jain
Anshika Jain

Reputation: 177

Jenkins Groovy - How to get params global variable of all running builds of a given job?

stages {
    stage('Main') {
        steps {
            script{
                sleep(5)
                def runningBuilds = Jenkins.instance.getItemByFullName("${JOB_NAME}").getBuilds().findAll() { it.getResult().equals(null) }
                for(i in 0 .. runningBuilds.size()-1) {
                    //print running - below line gives workflow object
                    print runningBuilds.get(i)
                    //How do I get 'params' global variable of all running builds here???
                    }
                if(runningBuilds.size()>1){
                    for(i in 1 .. runningBuilds.size()-1) {
                        //some processing
                    }
                }
            }
        }

How to get params global variable of all running builds of a given job? runningBuilds.get(i) gives workflow object, how to retrieve params from it?

Upvotes: 1

Views: 265

Answers (1)

zett42
zett42

Reputation: 27756

For each running build, call the getAction method with argument hudson.model.ParametersAction. It returns a collection of ParameterValue.

def runningBuilds = Jenkins.instance.getItemByFullName(JOB_NAME).getBuilds().findAll() {
    it.getResult().equals(null) 
}

for( run in runningBuilds ) {       
    for( param in run.getAction( hudson.model.ParametersAction ) ) { 
        println "Parameter name: $param.name, value: ${param.getValue()}"
    }            
}

Upvotes: 2

Related Questions