1

Start jenkins job immediately after creation by seed job

I can start a job from within the job dsl like this:

queue('my-job')

But how do I start a job with argument or parameters? I want to pass that job some arguments somehow.

red888
  • 27,709
  • 55
  • 204
  • 392

1 Answers1

1

Afaik, you can't.

But what you can do is creating it from a pipeline (jobDsl step), then run it. Something more or less like...

pipeline {
  stages {
    stage('jobs creation') {
      steps {
        jobDsl targets: 'my_job.dsl',
               additionalParameters: [REQUESTED_JOB_NAME: "my_job's_name"]

        build job: "my_job's_name",
              parameters: [booleanParam(name: 'DRY_RUN', value: true)]
      }
    }
  }
}

With a barebones 'my_job.dsl'...

pipelineJob(REQUESTED_JOB_NAME) {
  definition {
    // blah...
  }
}

NOTE: As you see, I explicitly set the name of the job from the calling pipeline (the REQUESTED_JOB_NAME var) because otherwise I don't know how to make the jobDSL code to return the name of the job it creates back to the calling pipeline.

I use this "trick" to avoid the "job params go one run behind" problem. I use the DRY_RUN param of the job (I use a hidden param, in fact) to run a "do-nothing" build as its name implies, so by the time others need to use the job for "real stuff" its params section has already been properly parsed.