Skip to content

Commit

Permalink
JENKINS-28709 Join Plugin ignores dependencies wrapped with flexible-…
Browse files Browse the repository at this point in the history
…publish

(https://issues.jenkins-ci.org/browse/JENKINS-28709)

Now it can handle "hudson.plugins.parameterizedtrigger.BuildTrigger"  in Flexible publisher!
  • Loading branch information
俞韋廷 committed May 23, 2016
1 parent d8c5851 commit 246a1fb
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
5 changes: 5 additions & 0 deletions pom.xml
Expand Up @@ -56,6 +56,11 @@
<version>2.12</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>flexible-publish</artifactId>
<version>0.15.2</version>
</dependency>
</dependencies>

<properties>
Expand Down
45 changes: 45 additions & 0 deletions src/main/java/join/JoinTrigger.java
Expand Up @@ -64,12 +64,15 @@
import join.JoinAction.JoinCause;
import net.sf.json.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.jenkins_ci.plugins.flexible_publish.ConditionalPublisher;
import org.jenkins_ci.plugins.flexible_publish.FlexiblePublisher;
import org.kohsuke.stapler.AncestorInPath;
import org.kohsuke.stapler.QueryParameter;
import org.kohsuke.stapler.StaplerRequest;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.StringTokenizer;
import java.util.logging.Level;
Expand Down Expand Up @@ -210,6 +213,46 @@ private List<AbstractProject<?,?>> getDownstreamExtDownstream(
return ret;
}

private Collection<? extends AbstractProject<?, ?>> getParameterizedDownstreamInFlexiblePublisher(
AbstractProject<?, ?> project) {

DescribableList<Publisher, Descriptor<Publisher>> publishers = project.getPublishersList();
List<AbstractProject<?, ?>> ret = new ArrayList<AbstractProject<?, ?>>();

FlexiblePublisher flexiblePublisher = publishers.get(FlexiblePublisher.class);

if (flexiblePublisher != null ) {

for (ConditionalPublisher conditionalPublisher : flexiblePublisher.getPublishers()) {
for (BuildStep buildStep : conditionalPublisher.getPublisherList()) {
if (buildStep instanceof hudson.plugins.parameterizedtrigger.BuildTrigger) {

ret.addAll(GetProjectFromBuildTriggerConfigs((hudson.plugins.parameterizedtrigger.BuildTrigger)buildStep));
}
}
}
}

return ret;
}

private Collection<? extends AbstractProject<?, ?>> GetProjectFromBuildTriggerConfigs(
hudson.plugins.parameterizedtrigger.BuildTrigger buildTrigger) {

List<AbstractProject<?, ?>> ret = new ArrayList<AbstractProject<?, ?>>();

for (hudson.model.Project p : Hudson.getInstance().getProjects()) {

for (BuildTriggerConfig config : buildTrigger.getConfigs()) {
if (p.getName().equals(config.getProjects())) {
ret.add(p);
}
}
}

return ret;
}

static boolean canDeclare(AbstractProject<?,?> owner) {
// Inner class added in Hudson 1.341
return true;
Expand All @@ -218,10 +261,12 @@ static boolean canDeclare(AbstractProject<?,?> owner) {

public List<AbstractProject<?,?>> getAllDownstream(AbstractProject<?,?> project, EnvVars env) {
List<AbstractProject<?,?>> downstream = getBuildTriggerDownstream(project);
downstream.addAll(getParameterizedDownstreamInFlexiblePublisher(project));
downstream.addAll(getParameterizedDownstreamProjects(project.getParent(), project.getPublishersList(), env));
downstream.addAll(getDownstreamExtDownstream(project.getParent(), project.getPublishersList()));
return downstream;
}


public List<AbstractProject<?,?>> getBuildTriggerDownstream(AbstractProject<?,?> project) {
ArrayList<AbstractProject<?,?>> ret = new ArrayList<AbstractProject<?,?>>();
Expand Down

0 comments on commit 246a1fb

Please sign in to comment.