Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[Fixed JENKINS-9254] Fix for NPE when promoting a build with a custom…
… workspace.
  • Loading branch information
Mike Robinet committed Apr 5, 2011
1 parent 1151e0c commit 373b2d4
Showing 1 changed file with 9 additions and 23 deletions.
32 changes: 9 additions & 23 deletions src/main/java/hudson/plugins/promoted_builds/Promotion.java
@@ -1,13 +1,11 @@
package hudson.plugins.promoted_builds;

import hudson.EnvVars;
import hudson.FilePath;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.BuildListener;
import hudson.model.Cause.LegacyCodeCause;
import hudson.model.Hudson;
import hudson.model.Job;
import hudson.model.Node;
import hudson.model.Result;
import hudson.model.TaskListener;
Expand All @@ -23,19 +21,13 @@
import java.io.IOException;
import java.util.Calendar;
import java.util.List;
import java.util.logging.Logger;

/**
* Records a promotion process.
*
* @author Kohsuke Kawaguchi
*/
public class Promotion extends AbstractBuild<PromotionProcess,Promotion> {
/**
* The build number of the project that this promotion promoted.
* @see #getTarget()
*/
private int targetBuildNumber;

public Promotion(PromotionProcess job) throws IOException {
super(job);
Expand All @@ -53,7 +45,8 @@ public Promotion(PromotionProcess project, File buildDir) throws IOException {
* Gets the build that this promotion promoted.
*/
public AbstractBuild<?,?> getTarget() {
return getParent().getOwner().getBuildByNumber(targetBuildNumber);
PromotionTargetAction pta = getAction(PromotionTargetAction.class);
return pta.resolve();
}

@Override
Expand All @@ -74,14 +67,13 @@ public EnvVars getEnvironment(TaskListener listener) throws IOException, Interru
EnvVars e = super.getEnvironment(listener);

// Augment environment with target build's information
if (targetBuildNumber != 0) {
String rootUrl = Hudson.getInstance().getRootUrl();
if(rootUrl!=null)
e.put("PROMOTED_URL",rootUrl+getTarget().getUrl());
e.put("PROMOTED_JOB_NAME", getTarget().getParent().getName());
e.put("PROMOTED_NUMBER", Integer.toString(targetBuildNumber));
e.put("PROMOTED_ID", getTarget().getId());
}
String rootUrl = Hudson.getInstance().getRootUrl();
AbstractBuild<?, ?> target = getTarget();
if(rootUrl!=null)
e.put("PROMOTED_URL",rootUrl+target.getUrl());
e.put("PROMOTED_JOB_NAME", target.getParent().getName());
e.put("PROMOTED_NUMBER", Integer.toString(target.getNumber()));
e.put("PROMOTED_ID", target.getId());

// Allow the promotion status to contribute to build environment
getStatus().buildEnvVars(this, e);
Expand All @@ -94,11 +86,6 @@ public void run() {
}

protected class RunnerImpl extends AbstractRunner {
private AbstractBuild<?,?> getTarget() {
PromotionTargetAction pta = getAction(PromotionTargetAction.class);
return pta.resolve();
}

@Override
protected Lease decideWorkspace(Node n, WorkspaceList wsl) throws InterruptedException, IOException {
String customWorkspace = getProject().getCustomWorkspace();
Expand All @@ -111,7 +98,6 @@ protected Lease decideWorkspace(Node n, WorkspaceList wsl) throws InterruptedExc

protected Result doRun(BuildListener listener) throws Exception {
AbstractBuild<?, ?> target = getTarget();
targetBuildNumber = target.getNumber();

listener.getLogger().println("Promoting "+target);

Expand Down

0 comments on commit 373b2d4

Please sign in to comment.