Skip to content

Commit

Permalink
Merge pull request #19 from mrooney/master
Browse files Browse the repository at this point in the history
expose missing environment variables for JENKINS-34847
  • Loading branch information
nemccarthy committed Sep 22, 2016
2 parents 20d36fb + c0a9f43 commit 059d562
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 21 deletions.
@@ -0,0 +1,55 @@
package stashpullrequestbuilder.stashpullrequestbuilder;

import hudson.EnvVars;
import hudson.Extension;
import hudson.model.*;

import javax.annotation.Nonnull;
import java.io.IOException;
import java.util.*;

@Extension
public class StashAditionalParameterEnvironmentContributor extends EnvironmentContributor {
private static Set<String> params =
new HashSet<String>(Arrays.asList("sourceBranch",
"targetBranch",
"sourceRepositoryOwner",
"sourceRepositoryName",
"pullRequestId",
"destinationRepositoryOwner",
"destinationRepositoryName",
"pullRequestTitle",
"sourceCommitHash",
"destinationCommitHash"));

@Override
public void buildEnvironmentFor(@Nonnull Run r, @Nonnull EnvVars envs, @Nonnull TaskListener listener) throws IOException, InterruptedException {
StashCause cause = (StashCause) r.getCause(StashCause.class);
if (cause == null) {
return;
}
ParametersAction pa = r.getAction(ParametersAction.class);
for (String param : params) {
addParameter(param, pa, envs);
}
super.buildEnvironmentFor(r, envs, listener);
}

private static void addParameter(String key,
ParametersAction pa,
EnvVars envs) {
ParameterValue pv = pa.getParameter(key);
if (pv == null || !(pv instanceof StringParameterValue)) {
return;
}
StringParameterValue value = (StringParameterValue) pa.getParameter(key);
envs.put(key, getString(value.value, ""));
}

private static String getString(String actual,
String d) {
return actual == null ? d : actual;
}


}
Expand Up @@ -24,6 +24,7 @@

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
Expand Down Expand Up @@ -178,38 +179,33 @@ public StashPullRequestsBuilder getBuilder() {
}

public QueueTaskFuture<?> startJob(StashCause cause) {
Map<String, ParameterValue> values = new HashMap<String, ParameterValue>();
values.put("sourceBranch", new StringParameterValue("sourceBranch", cause.getSourceBranch()));
values.put("targetBranch", new StringParameterValue("targetBranch", cause.getTargetBranch()));
values.put("sourceRepositoryOwner", new StringParameterValue("sourceRepositoryOwner", cause.getSourceRepositoryOwner()));
values.put("sourceRepositoryName", new StringParameterValue("sourceRepositoryName", cause.getSourceRepositoryName()));
values.put("pullRequestId", new StringParameterValue("pullRequestId", cause.getPullRequestId()));
values.put("destinationRepositoryOwner", new StringParameterValue("destinationRepositoryOwner", cause.getDestinationRepositoryOwner()));
values.put("destinationRepositoryName", new StringParameterValue("destinationRepositoryName", cause.getDestinationRepositoryName()));
values.put("pullRequestTitle", new StringParameterValue("pullRequestTitle", cause.getPullRequestTitle()));
values.put("sourceCommitHash", new StringParameterValue("sourceCommitHash", cause.getSourceCommitHash()));
values.put("destinationCommitHash", new StringParameterValue("destinationCommitHash", cause.getDestinationCommitHash()));
List<ParameterValue> values = getDefaultParameters();
values.add(new StringParameterValue("sourceBranch", cause.getSourceBranch()));
values.add(new StringParameterValue("targetBranch", cause.getTargetBranch()));
values.add(new StringParameterValue("sourceRepositoryOwner", cause.getSourceRepositoryOwner()));
values.add(new StringParameterValue("sourceRepositoryName", cause.getSourceRepositoryName()));
values.add(new StringParameterValue("pullRequestId", cause.getPullRequestId()));
values.add(new StringParameterValue("destinationRepositoryOwner", cause.getDestinationRepositoryOwner()));
values.add(new StringParameterValue("destinationRepositoryName", cause.getDestinationRepositoryName()));
values.add(new StringParameterValue("pullRequestTitle", cause.getPullRequestTitle()));
values.add(new StringParameterValue("sourceCommitHash", cause.getSourceCommitHash()));
values.add(new StringParameterValue("destinationCommitHash", cause.getDestinationCommitHash()));

Map<String, String> additionalParameters = cause.getAdditionalParameters();
if(additionalParameters != null){
for(String parameter : additionalParameters.keySet()){
values.put(parameter, new StringParameterValue(parameter, additionalParameters.get(parameter)));
values.add(new StringParameterValue(parameter, additionalParameters.get(parameter)));
}
}

// Make sure to add the default parameter values back in!
values.putAll(this.getDefaultParameters());

return this.job.scheduleBuild2(0, cause, new ParametersAction(new ArrayList(values.values())));
return this.job.scheduleBuild2(0, cause, new ParametersAction(values));
}

private Map<String, ParameterValue> getDefaultParameters() {
Map<String, ParameterValue> values = new HashMap<String, ParameterValue>();
private List<ParameterValue> getDefaultParameters() {
List<ParameterValue> values = new ArrayList<ParameterValue>();
ParametersDefinitionProperty definitionProperty = this.job.getProperty(ParametersDefinitionProperty.class);

if (definitionProperty != null) {
for (ParameterDefinition definition : definitionProperty.getParameterDefinitions()) {
values.put(definition.getName(), definition.getDefaultParameterValue());
values.add(definition.getDefaultParameterValue());
}
}
return values;
Expand All @@ -220,6 +216,7 @@ public void run() {
if(this.getBuilder().getProject().isDisabled()) {
logger.info(format("Build Skip (%s).", getBuilder().getProject().getName()));
} else {
logger.info(format("Build started (%s).", getBuilder().getProject().getName()));
this.stashPullRequestsBuilder.run();
}
this.getDescriptor().save();
Expand Down

0 comments on commit 059d562

Please sign in to comment.