I checked inside the config.xml before and after I manually saved the 
downstream project.

The only difference after saved, the reverse build trigger was placed 
before the scmtrigger.
  <triggers>
 <jenkins.triggers.ReverseBuildTrigger>
   <spec></spec>
   <upstreamProjects>project1</upstreamProjects>
   <threshold>
     <name>SUCCESS</name>
     <ordinal>0</ordinal>
     <color>BLUE</color>
     <completeBuild>true</completeBuild>
   </threshold>
 </jenkins.triggers.ReverseBuildTrigger>
 <hudson.triggers.SCMTrigger>
   <spec>H/15 * * * *</spec>
   <ignorePostCommitHooks>false</ignorePostCommitHooks>
 </hudson.triggers.SCMTrigger>
</triggers>


fredag 21. august 2015 09.23.17 UTC+2 skrev Sverre Moe følgende:
>
> I have added some reverse build triggers with a Groovy script. 
> Unfortunately the triggers does not work properly.
>
> It all looks like its ok, but after an upstream project has been built I 
> get the following NullPointerException:
>
> Warning: you have no plugins providing access control for builds, so falling 
> back to legacy behavior of permitting any downstream builds to be triggered
> FATAL: null
> java.lang.NullPointerException
>  
> <http://stacktrace.jenkins-ci.org/search?query=java.lang.NullPointerException>
>         at 
> jenkins.triggers.ReverseBuildTrigger.shouldTrigger(ReverseBuildTrigger.java:111)
>  
> <http://stacktrace.jenkins-ci.org/search/?query=jenkins.triggers.ReverseBuildTrigger.shouldTrigger&entity=method>
>         at 
> jenkins.triggers.ReverseBuildTrigger.access$000(ReverseBuildTrigger.java:84) 
> <http://stacktrace.jenkins-ci.org/search/?query=jenkins.triggers.ReverseBuildTrigger.access$000&entity=method>
>         at 
> jenkins.triggers.ReverseBuildTrigger$1.shouldTriggerBuild(ReverseBuildTrigger.java:141)
>  
> <http://stacktrace.jenkins-ci.org/search/?query=jenkins.triggers.ReverseBuildTrigger$1.shouldTriggerBuild&entity=method>
>         at hudson.tasks.BuildTrigger.execute(BuildTrigger.java:245) 
> <http://stacktrace.jenkins-ci.org/search/?query=hudson.tasks.BuildTrigger.execute&entity=method>
>         at 
> hudson.model.AbstractBuild$AbstractBuildExecution.cleanUp(AbstractBuild.java:687)
>  
> <http://stacktrace.jenkins-ci.org/search/?query=hudson.model.AbstractBuild$AbstractBuildExecution.cleanUp&entity=method>
>         at hudson.model.Run.execute(Run.java:1788) 
> <http://stacktrace.jenkins-ci.org/search/?query=hudson.model.Run.execute&entity=method>
>         at hudson.matrix.MatrixBuild.run(MatrixBuild.java:301) 
> <http://stacktrace.jenkins-ci.org/search/?query=hudson.matrix.MatrixBuild.run&entity=method>
>         at 
> hudson.model.ResourceController.execute(ResourceController.java:98) 
> <http://stacktrace.jenkins-ci.org/search/?query=hudson.model.ResourceController.execute&entity=method>
>         at hudson.model.Executor.run(Executor.java:381) 
> <http://stacktrace.jenkins-ci.org/search/?query=hudson.model.Executor.run&entity=method>
> Finished: SUCCESS
>
>
> I fixed it by the following approach: Before building one of the upstream 
> project, I went into the configuration of each of its downstream projects, 
> checked the "Build after other projects are built" for each of them. The 
> reverse build trigger was already activated, the projects listed. I save 
> the project even though there actually was no changes. This time the 
> reverse build trigger worked when an upstream project was build all its 
> downstream projects got triggered.
>
> Why did I have to manually go into each downstream project and save it? My 
> groovy script does that.
>
>
> #!/usr/bin/env groovy
>
> import jenkins.triggers.ReverseBuildTrigger
> import hudson.model.Result
>
> def jenkinsInstance = jenkins.model.Jenkins.getInstance()
> def developmentView = jenkinsInstance.getView("Development")
> developmentView.getItems().each { project ->
>
>     def upstreamProjects = null
>     if (project.name.equals("project3")) {
>         upstreamProjects = "project1, project2 "
>     }
>
>     if (upstreamProjects != null) {
>         def trigger = new ReverseBuildTrigger(upstreamProjects, 
> Result.SUCCESS)
>         project.addTrigger(trigger)
>         project.save()
>     }
> }
>
> jenkinsInstance.rebuildDependencyGraph()
> It contains only one for simplicity. My if-else contains aprox 100 
> projects.
>
>

-- 
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/52c26b21-181e-4344-a66a-4e37e33108c9%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to