Hi,

I use the job-dsl plugin to generate thousands of test projects via a
groovy script. I have a template job and some string arrays with my
parameters for test categories which are iterated for job generation.

Some of the main code snippets:

def create_windowsBatch = { name, filter ->
  return """cd %CCRoot%
  MKDIR ..\\TestResults
  UnitTest.bat ConformanceTests /resultsfile:..\\TestResults\\${name}.trx
/category:\"$filter\" """
}

def create_project = { my_name, filter, my_priority, day ->

  def str_myName = my_name
  println("Creating/Reconfiguring project with parameters: $my_name,
$filter, $my_priority, $day")

  def str_batchfile = create_windowsBatch(my_name, filter)
  def str_jobDescription = create_jobDescription(filter)

  job {
      disabled(false)
      name(str_myName)
      description(str_jobDescription)
      using 'Nightly_Tests_Template'
      logRotator(-1, 10, -1, 5)
      priority (my_priority)
      environmentVariables( CCRoot:"\${WORKSPACE}\\${str_upstream_job}" )
  parameters {
stringParam("UPSTREAM_JOB", "${str_upstream_job}", "The upstream job name
to use for this build")
  }
      triggers {
          cron("30 20 * * ${day}")
      }
      scm {
          cloneWorkspace(str_upstream_job, "Not Failed")
      }
      steps {
        batchFile(str_batchfile)
      }
  }
  counter++
}

[...]

for (item_systemType in str_allSystemTypes)
{
  for (item_applicationType in str_applicationTypesToSplit)
  {

create_project("${jobname_factory("$item_applicationType-$item_systemType",
"WCDMA")}", "$item_applicationType&$item_systemType&Virtual", 120,
"$str_day")
  }
}

HTH
Dirk



2014-06-13 3:14 GMT+02:00 Alberto Scotto <scotto.alberto...@gmail.com>:

> Hi
>
> Long story short, I was wondering if anyone ever felt the need for (and
> knows of any implementation of) the possibility of "instantiating" (OO
> terminology) a parametrized build.
> What I mean is treating a parametrized build as a template, from which
> many "instances" can be generated.
> Each instance is supposed to define a different combination of values for
> the parameters.
> The final goal is twofold:
> 1. DRY (which is given simply by the parametrized build concept)
> 2.1 having separate build histories / test reports for each instance
> (otherwise it would be a mess)
> 2.2 the instances would be schedulable directly in jenkins UI (while a
> parametrized build is not)
>
> The template would then be used only for:
> - manual builds
> - changing the config for all of the instances at once
>
>
> Now, time for some context, as I may be missing something in my overall
> approach.
> You are welcome to point me in the right direction :)
>
>
> I have a maven project with a suite of selenium tests that I want jenkins
> to run.
> The suite is parametrized: browser, OS, test environment.
> So, I can run it e.g. with `mvn test -Dbrowser=chrome -Dplatform=win [..]`.
>
> I want a separate test report for each combination of my parameters.
> As a newbie, my first solution was "Copy existing job".
> Quick and dirty. But effective.
> As you will know, problems arise when you need to make a change to the
> configuration of the job, and you want to keep in sync all of these
> copy&pasted jobs.
> Then I found the parametrized build feature.
> It's very cool (code reuse/maintainability++), but the test report and
> the build history is shared among all of the actual builds, therefore I can
> not rely on them for a tidy reporting like "this test is always failing on
> IE; but it isn't on chrome", and so on.
>
>
> Thank you very much in advance
>
> AS
>
> --
> 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 jenkinsci-users+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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 jenkinsci-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to