Hello

I have an upstream scripted pipeline calling in parallel downstream script 
pipeline.
I would like after the run, that the upstream pipeline know on which slave 
they have been executed.

Would you know how can we do this?


Upstream pipeline ("pipeline 123"):
import hudson.Util;

node ("master") {
    cleanWs()
    def tc_job_name
    def tc=["tc002","tc003"]
    def branches=[:]   
        
    stage ("phase")   {
        tc_job_name = "subpipeline"    
        
        for (int i = 0; i <= tc.size()-1; i++) {    
            def index = i //if we tried to use i below, it would equal 
tc.size()-1 in each job execution.
            branches["${tc[index]}"] = {
                    def first_run,job_hudson,build_hudson,build_env
                    first_run = build job: tc_job_name, parameters: 
[string(name:'dummy', value: "${index}")], description:'${tc[index]}', 
propagate: false
                    
                    def rawbuild = first_run.getRawBuild() 
                    def build_properties = rawbuild.getProperties()
                    def log = build_properties['log']
                    
                    def node = log.tokenize('\n').findAll {it.contains 
'Running on'}.each {it}[0].split(" ")[2]
                    echo node
                    
               } // end of branches["${tc[index]}"] definition
        } // for (int i = 0; i <= tc.size()-1; i++) 
        parallel branches
    } // stage phase
} // node ("master") 


Downstream pipeline ("subpipeline"):
node('only_tc') {
    stage ("test") {
        echo env.NODE_NAME
    }
}

What has been tried:
* In upstream pipeline I have tried to get the owner of the executor 
launching the downstream pipeline:

tc_job_name ='subpipeline'

first_run=build job: job_name

def build_hudson = first_run.getRawBuild()

def build_properties = build_hudson.getProperties() 

def executor = build_properties['executor']

println "Node: "+ executor.getOwner().getCaption()


But it doesn't work with parallelized job execution , it outputs "Master" 
which is not the jenkins slave executor


* Getting NODE_NAME environment parameter:

tc_job_name ='subpipeline'

first_run=build job: job_name

def build_hudson = first_run.getRawBuild()

 def build_env = build_hudson.getEnvironment()

           println build_env.get("NODE_NAME","no node name")


But the environment variables of a pipeline is not the same as a freestyle 
job and it has not any NODE_NAME


* Parsing the log environment variable: (see first sample), but it's not 
the right way to do I guess.


Thanks in advanced !!


Vincent

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/feb98bbd-260e-43da-960f-abd773f6f1bc%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to