Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge 48 #191

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 9 additions & 15 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -1,20 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>org.jenkins-ci.plugins</groupId>
<artifactId>plugin</artifactId>
<version>1.532</version>
</parent>

<artifactId>ghprb</artifactId>
<name>GitHub Pull Request Builder</name>
<version>1.15-2-SNAPSHOT</version>
<packaging>hpi</packaging>

<url>https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin</url>

<developers>
<developer>
<id>janinko</id>
Expand All @@ -31,23 +28,19 @@
<email>david.joel.tanner@gmail.com</email>
</developer>
</developers>

<scm>
<connection>scm:git:ssh://github.com/jenkinsci/ghprb-plugin.git</connection>
<developerConnection>scm:git:ssh://git@github.com/jenkinsci/ghprb-plugin.git</developerConnection>
<url>https://github.com/jenkinsci/ghprb-plugin</url>
<tag>HEAD</tag>
</scm>

<issueManagement>
<system>GitHub</system>
<url>https://github.com/janinko/ghprb/issues</url>
</issueManagement>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<dependency>
<groupId>com.coravy.hudson.plugins.github</groupId>
Expand Down Expand Up @@ -93,8 +86,13 @@
<version>1.10</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.cloudbees.plugins</groupId>
<artifactId>build-flow-plugin</artifactId>
<version>0.12</version>
<optional>true</optional>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
Expand All @@ -109,7 +107,6 @@
</dependency>
</dependencies>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
Expand Down Expand Up @@ -141,7 +138,6 @@
</plugin>
</plugins>
</build>

<repositories>
<repository>
<id>repo.jenkins-ci.org</id>
Expand All @@ -153,18 +149,16 @@
<url>http://download.eclipse.org/jgit/maven</url>
</repository>
</repositories>

<pluginRepositories>
<pluginRepository>
<id>repo.jenkins-ci.org</id>
<url>http://repo.jenkins-ci.org/public/</url>
</pluginRepository>
</pluginRepositories>

<distributionManagement>
<repository>
<id>maven.jenkins-ci.org</id>
<url>http://maven.jenkins-ci.org:8081/content/repositories/releases/</url>
</repository>
</distributionManagement>
</project>
</project>
29 changes: 28 additions & 1 deletion src/main/java/org/jenkinsci/plugins/ghprb/GhprbBuilds.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@
import hudson.plugins.git.util.BuildData;

import org.apache.commons.io.FileUtils;

import org.jenkinsci.plugins.ghprb.manager.GhprbBuildManager;
import org.jenkinsci.plugins.ghprb.manager.configuration.JobConfiguration;
import org.jenkinsci.plugins.ghprb.manager.factory.GhprbBuildManagerFactoryUtil;

import org.kohsuke.github.GHCommitState;
import org.kohsuke.github.GHIssueState;
import org.kohsuke.github.GHPullRequest;
Expand Down Expand Up @@ -138,8 +143,9 @@ public void onCompleted(AbstractBuild<?,?> build, PrintStream logger) {
} else {
msg.append(GhprbTrigger.getDscp().getMsgFailure(build));
}

msg.append("\nRefer to this link for build results (access rights to CI server needed): \n");
msg.append(publishedURL).append(build.getUrl());
msg.append(generateCustomizedMessage(build));

int numLines = GhprbTrigger.getDscp().getlogExcerptLines();
if (state != GHCommitState.SUCCESS && numLines > 0) {
Expand Down Expand Up @@ -177,4 +183,25 @@ public void onCompleted(AbstractBuild<?,?> build, PrintStream logger) {
}
}
}

private String generateCustomizedMessage(AbstractBuild build) {
JobConfiguration jobConfiguration =
JobConfiguration.builder()
.printStackTrace(trigger.isDisplayBuildErrorsOnDownstreamBuilds())
.build();

GhprbBuildManager buildManager =
GhprbBuildManagerFactoryUtil.getBuildManager(build, jobConfiguration);

StringBuilder sb = new StringBuilder();

sb.append(buildManager.calculateBuildUrl());

if (build.getResult() != Result.SUCCESS) {
sb.append(
buildManager.getTestResults());
}

return sb.toString();
}
}
20 changes: 18 additions & 2 deletions src/main/java/org/jenkinsci/plugins/ghprb/GhprbTrigger.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ public class GhprbTrigger extends Trigger<AbstractProject<?, ?>> {
private final String commentFilePath;
private String whitelist;
private Boolean autoCloseFailedPullRequests;
private Boolean displayBuildErrorsOnDownstreamBuilds;
private List<GhprbBranch> whiteListTargetBranches;
private transient Ghprb helper;
private String project;
Expand All @@ -68,6 +69,7 @@ public GhprbTrigger(String adminlist,
Boolean useGitHubHooks,
Boolean permitAll,
Boolean autoCloseFailedPullRequests,
Boolean displayBuildErrorsOnDownstreamBuilds,
String commentFilePath,
List<GhprbBranch> whiteListTargetBranches,
Boolean allowMembersOfWhitelistedOrgsAsAdmin) throws ANTLRException {
Expand All @@ -81,6 +83,7 @@ public GhprbTrigger(String adminlist,
this.useGitHubHooks = useGitHubHooks;
this.permitAll = permitAll;
this.autoCloseFailedPullRequests = autoCloseFailedPullRequests;
this.displayBuildErrorsOnDownstreamBuilds = displayBuildErrorsOnDownstreamBuilds;
this.whiteListTargetBranches = whiteListTargetBranches;
this.commentFilePath = commentFilePath;
this.allowMembersOfWhitelistedOrgsAsAdmin = allowMembersOfWhitelistedOrgsAsAdmin;
Expand Down Expand Up @@ -288,9 +291,16 @@ public Boolean isAutoCloseFailedPullRequests() {
if (autoCloseFailedPullRequests == null) {
Boolean autoClose = getDescriptor().getAutoCloseFailedPullRequests();
return (autoClose != null && autoClose);
} else {
return autoCloseFailedPullRequests;
}
return autoCloseFailedPullRequests;
}

public Boolean isDisplayBuildErrorsOnDownstreamBuilds() {
if (displayBuildErrorsOnDownstreamBuilds == null) {
Boolean displayErrors = getDescriptor().getDisplayBuildErrorsOnDownstreamBuilds();
return (displayErrors != null && displayErrors);
}
return displayBuildErrorsOnDownstreamBuilds;
}

public List<GhprbBranch> getWhiteListTargetBranches() {
Expand Down Expand Up @@ -352,6 +362,7 @@ public static final class DescriptorImpl extends TriggerDescriptor {
private String msgFailure = "Test FAILed.";
private List<GhprbBranch> whiteListTargetBranches;
private Boolean autoCloseFailedPullRequests = false;
private Boolean displayBuildErrorsOnDownstreamBuilds = false;



Expand Down Expand Up @@ -400,6 +411,7 @@ public boolean configure(StaplerRequest req, JSONObject formData) throws FormExc
logExcerptLines = formData.getInt("logExcerptLines");
unstableAs = formData.getString("unstableAs");
autoCloseFailedPullRequests = formData.getBoolean("autoCloseFailedPullRequests");
displayBuildErrorsOnDownstreamBuilds = formData.getBoolean("displayBuildErrorsOnDownstreamBuilds");
msgSuccess = formData.getString("msgSuccess");
msgFailure = formData.getString("msgFailure");

Expand Down Expand Up @@ -482,6 +494,10 @@ public Boolean getAutoCloseFailedPullRequests() {
return autoCloseFailedPullRequests;
}

public Boolean getDisplayBuildErrorsOnDownstreamBuilds() {
return displayBuildErrorsOnDownstreamBuilds;
}

public String getServerAPIUrl() {
return serverAPIUrl;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package org.jenkinsci.plugins.ghprb.manager;

import java.util.Iterator;

/**
* @author mdelapenya (Manuel de la Peña)
*/
public interface GhprbBuildManager {

/**
* Calculate the build URL of a build
*
* @return the build URL
*/
String calculateBuildUrl();

/**
* Returns downstream builds as an iterator
*
* @return the iterator
*/
Iterator downstreamProjects();

/**
* Print tests result of a build
*
* @return the tests result
*/
String getTestResults();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package org.jenkinsci.plugins.ghprb.manager.configuration;

/**
* @author Miguel Pastor
*/
public class JobConfiguration {

public static PrintStackTrace builder() {
return new JobConfigurationBuilder();
}

private boolean printStacktrace;

private JobConfiguration() {
}

public boolean printStackTrace() {
return this.printStacktrace;
}

public static interface PrintStackTrace {
Build printStackTrace(boolean print);
}

public static interface Build {
JobConfiguration build();
}


public static final class JobConfigurationBuilder implements Build, PrintStackTrace {

private JobConfiguration jobConfiguration = new JobConfiguration();

public JobConfiguration build() {
return jobConfiguration;
}

public Build printStackTrace(boolean print) {
jobConfiguration.printStacktrace = print;
return this;
}
}

}


Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package org.jenkinsci.plugins.ghprb.manager.factory;


import com.cloudbees.plugins.flow.FlowRun;

import hudson.model.AbstractBuild;
import org.jenkinsci.plugins.ghprb.manager.configuration.JobConfiguration;
import org.jenkinsci.plugins.ghprb.manager.GhprbBuildManager;
import org.jenkinsci.plugins.ghprb.manager.impl.GhprbDefaultBuildManager;
import org.jenkinsci.plugins.ghprb.manager.impl.downstreambuilds.BuildFlowBuildManager;

/**
* @author mdelapenya (Manuel de la Peña)
*/
public class GhprbBuildManagerFactoryUtil {

/**
* Gets an instance of a library that is able to calculate build urls
* depending of build type.
*
* If the class representing the build type is not present on the classloader
* then default implementation is returned.
*
* @param build
* @return
*/
public static GhprbBuildManager getBuildManager(AbstractBuild build) {
JobConfiguration jobConfiguration =
JobConfiguration.builder()
.printStackTrace(false)
.build();

return getBuildManager(build, jobConfiguration);
}

public static GhprbBuildManager getBuildManager(AbstractBuild build, JobConfiguration jobConfiguration) {
try {
if (build instanceof FlowRun) {
return new BuildFlowBuildManager(build, jobConfiguration);
}
}
catch (NoClassDefFoundError ncdfe) {
}

return new GhprbDefaultBuildManager(build);
}

}
Loading