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 jenkinsci-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/359c5d02-ec66-44b1-be3d-3df40d7e7ab5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to