hudson.model
Class AbstractBuild<P extends AbstractProject<P,R>,R extends AbstractBuild<P,R>>

java.lang.Object
  extended by hudson.model.AbstractModelObject
      extended by hudson.model.Actionable
          extended by hudson.model.Run<P,R>
              extended by hudson.model.AbstractBuild<P,R>
All Implemented Interfaces:
ExtensionPoint, DescriptorByNameOwner, ModelObject, PersistenceRoot, Queue.Executable, Saveable, SearchableModelObject, SearchItem, AccessControlled, Comparable<R>, Runnable, ModelObjectWithContextMenu, OnMaster
Direct Known Subclasses:
AbstractMavenBuild, Build, MatrixBuild

public abstract class AbstractBuild<P extends AbstractProject<P,R>,R extends AbstractBuild<P,R>>
extends Run<P,R>
implements Queue.Executable

Base implementation of Runs that build software. For now this is primarily the common part of Build and MavenBuild.

Author:
Kohsuke Kawaguchi
See Also:
AbstractProject

Nested Class Summary
 class AbstractBuild.AbstractBuildExecution
           
 class AbstractBuild.AbstractRunner
          Deprecated. as of 1.467 Please use RunExecution
static class AbstractBuild.DependencyChange
          Represents a change in the dependency.
 
Nested classes/interfaces inherited from class hudson.model.Run
Run.Artifact, Run.ArtifactList, Run.KeepLogBuildBadge, Run.RedirectUp, Run.RunExecution, Run.Runner, Run.RunnerAbortedException, Run.Summary
 
Nested classes/interfaces inherited from interface hudson.ExtensionPoint
ExtensionPoint.LegacyInstancesAreScopedToHudson
 
Nested classes/interfaces inherited from interface jenkins.model.ModelObjectWithContextMenu
ModelObjectWithContextMenu.ContextMenu, ModelObjectWithContextMenu.MenuItem
 
Field Summary
protected  List<Environment> buildEnvironments
          During the build this field remembers BuildWrapper.Environments created by BuildWrapper.
 
Fields inherited from class hudson.model.Run
ARTIFACTS, charset, DELETE, description, duration, FEED_ADAPTER, FEED_ADAPTER_LATEST, ID_FORMATTER, LIST_CUTOFF, number, ORDER_BY_DATE, PERMISSIONS, project, result, state, timestamp, TREE_CUTOFF, UPDATE, XSTREAM, XSTREAM2
 
Fields inherited from interface hudson.model.Saveable
NOOP
 
Constructor Summary
protected AbstractBuild(P job)
           
protected AbstractBuild(P job, Calendar timestamp)
           
protected AbstractBuild(P project, File buildDir)
           
 
Method Summary
 org.kohsuke.stapler.HttpResponse doStop()
          Stops this build if it's still going.
 void doStop(org.kohsuke.stapler.StaplerRequest req, org.kohsuke.stapler.StaplerResponse rsp)
          Deprecated. as of 1.489 Use doStop()
 Calendar due()
           
 AggregatedTestResultAction getAggregatedTestResultAction()
          Gets AggregatedTestResultAction associated with this build if any.
 Collection<Fingerprint> getBuildFingerprints()
          get the fingerprints associated with this build
 VariableResolver<String> getBuildVariableResolver()
          Creates VariableResolver backed by getBuildVariables().
 Map<String,String> getBuildVariables()
          Provides additional variables and their values to Builders.
 Node getBuiltOn()
          Returns a Slave on which this build was done.
 String getBuiltOnStr()
          Returns the name of the slave it was built on; null or "" if built by the master.
 ChangeLogSet<? extends ChangeLogSet.Entry> getChangeSet()
          Gets the changes incorporated into this build.
 Set<User> getCulprits()
          List of users who committed a change since the last non-broken build till now.
 Map<AbstractProject,AbstractBuild.DependencyChange> getDependencyChanges(AbstractBuild from)
          Gets the changes in the dependency between the given build and this build.
 Map<AbstractProject,Fingerprint.RangeSet> getDownstreamBuilds()
          Gets the downstream builds of this build, which are the builds of the downstream projects that use artifacts of this build.
 Iterable<AbstractBuild<?,?>> getDownstreamBuilds(AbstractProject<?,?> that)
          Works like getDownstreamRelationship(AbstractProject) but returns the actual build objects, in ascending order.
 Fingerprint.RangeSet getDownstreamRelationship(AbstractProject that)
          Gets the dependency relationship from this build (as the source) and that project (as the sink.)
 EnvVars getEnvironment(TaskListener log)
          Returns the map that contains environmental variables to be used for launching processes for this build.
 EnvironmentList getEnvironments()
          During the build, expose the environments contributed by BuildWrappers and others.
 String getHudsonVersion()
          Gets the version of Hudson that was used to build this job.
 FilePath getModuleRoot()
          Returns the root directory of the checked-out module.
 FilePath[] getModuleRoots()
          Returns the root directories of all checked-out modules.
 R getNextBuild()
           
 List<Action> getPersistentActions()
           
 R getPreviousBuild()
           
 P getProject()
           
 AbstractBuild<?,?> getRootBuild()
          Gets the nearest ancestor AbstractBuild that belongs to the root project of getProject() that dominates/governs/encompasses this build.
 Set<String> getSensitiveBuildVariables()
          Builds up a set of variable names that contain sensitive values that should not be exposed.
 AbstractTestResultAction getTestResultAction()
          Gets AbstractTestResultAction associated with this build if any.
 Map<AbstractProject,Integer> getTransitiveUpstreamBuilds()
          Works like getUpstreamBuilds() but also includes all the transitive dependencies as well.
 Map<AbstractProject,Integer> getUpstreamBuilds()
          Gets the upstream builds of this build, which are the builds of the upstream projects whose artifacts feed into this build.
 int getUpstreamRelationship(AbstractProject that)
          Gets the dependency relationship from this build (as the sink) and that project (as the source.)
 AbstractBuild<?,?> getUpstreamRelationshipBuild(AbstractProject<?,?> that)
          Works like getUpstreamRelationship(AbstractProject) but returns the actual build object.
 String getUpUrl()
          Used to render the side panel "Back to project" link.
 String getWhyKeepLog()
          If Run.isKeepLog() returns true, returns a short, human-readable sentence that explains why it's being kept.
 FilePath getWorkspace()
          Gets the directory where this build is being built.
 boolean hasChangeSetComputed()
          Returns true if the changelog is already computed.
 boolean hasParticipant(User user)
          Returns true if this user has made a commit to this build.
abstract  void run()
          Invoked by Executor to performs a build.
protected  void setBuiltOnStr(String builtOn)
          Allows subtypes to set the value of builtOn.
protected  void setWorkspace(FilePath ws)
          Normally, a workspace is assigned by RunExecution, but this lets you set the workspace in case AbstractBuild is created without a build.
 
Methods inherited from class hudson.model.Run
_this, addAction, canToggleLogKeep, checkPermission, compareTo, delete, deleteArtifacts, doArtifact, doBuildNumber, doBuildStatus, doBuildTimestamp, doConfigSubmit, doConsoleText, doDoDelete, doProgressiveLog, doSubmitDescription, doToggleLogKeep, execute, fromExternalizableId, getAbsoluteUrl, getACL, getApi, getArtifacts, getArtifactsDir, getArtifactsUpTo, getBadgeActions, getBuildStatusSummary, getBuildStatusUrl, getCause, getCauses, getCharacteristicEnvVars, getCharset, getDescription, getDescriptorByName, getDisplayName, getDuration, getDurationString, getDynamic, getEnvironment, getEnvVars, getEstimatedDuration, getExecutor, getExternalizableId, getFullDisplayName, getHasArtifacts, getIconColor, getId, getIDFormatter, getLog, getLog, getLogFile, getLogInputStream, getLogReader, getLogText, getNumber, getOneOffExecutor, getParent, getPreviousBuildInProgress, getPreviousBuildsOverThreshold, getPreviousBuiltBuild, getPreviousCompletedBuild, getPreviousFailedBuild, getPreviousNotFailedBuild, getPreviousSuccessfulBuild, getResult, getRootDir, getSearchUrl, getStartTimeInMillis, getTime, getTimeInMillis, getTimestamp, getTimestampString, getTimestampString2, getTransientActions, getTruncatedDescription, getUrl, hasCustomDisplayName, hasntStartedYet, hasPermission, isBuilding, isKeepLog, isLogUpdated, keepLog, keepLog, makeSearchIndex, onEndBuilding, onLoad, onStartBuilding, reload, run, save, setDescription, setDisplayName, setResult, submit, toString, writeLogTo, writeWholeLogTo
 
Methods inherited from class hudson.model.Actionable
doContextMenu, getAction, getAction, getActions, getActions
 
Methods inherited from class hudson.model.AbstractModelObject
getSearch, getSearchIndex, getSearchName, requirePOST, sendError, sendError, sendError, sendError, sendError
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface hudson.model.Queue.Executable
getEstimatedDuration, getParent, toString
 

Field Detail

buildEnvironments

protected transient List<Environment> buildEnvironments
During the build this field remembers BuildWrapper.Environments created by BuildWrapper. This design is bit ugly but forced due to compatibility.

Constructor Detail

AbstractBuild

protected AbstractBuild(P job)
                 throws IOException
Throws:
IOException

AbstractBuild

protected AbstractBuild(P job,
                        Calendar timestamp)

AbstractBuild

protected AbstractBuild(P project,
                        File buildDir)
                 throws IOException
Throws:
IOException
Method Detail

getProject

public final P getProject()

getPreviousBuild

public R getPreviousBuild()
Overrides:
getPreviousBuild in class Run<P extends AbstractProject<P,R>,R extends AbstractBuild<P,R>>

getNextBuild

public R getNextBuild()
Overrides:
getNextBuild in class Run<P extends AbstractProject<P,R>,R extends AbstractBuild<P,R>>

getBuiltOn

@CheckForNull
public Node getBuiltOn()
Returns a Slave on which this build was done.

Returns:
null, for example if the slave that this build run no longer exists.

getBuiltOnStr

@Exported(name="builtOn")
public String getBuiltOnStr()
Returns the name of the slave it was built on; null or "" if built by the master. (null happens when we read old record that didn't have this information.)


setBuiltOnStr

protected void setBuiltOnStr(String builtOn)
Allows subtypes to set the value of builtOn. This is used for those implementations where an AbstractBuild is made 'built' without actually running its run() method.

Since:
1.429

getRootBuild

public AbstractBuild<?,?> getRootBuild()
Gets the nearest ancestor AbstractBuild that belongs to the root project of getProject() that dominates/governs/encompasses this build.

Some projects (such as matrix projects, Maven projects, or promotion processes) form a tree of jobs, and still in some of them, builds of child projects are related/tied to that of the parent project. In such a case, this method returns the governing build.

Returns:
never null. In the worst case the build dominates itself.
Since:
1.421
See Also:
AbstractProject.getRootProject()

getUpUrl

public String getUpUrl()
Used to render the side panel "Back to project" link.

In a rare situation where a build can be reached from multiple paths, returning different URLs from this method based on situations might be desirable.

If you override this method, you'll most likely also want to override Run.getDisplayName().


getWorkspace

@CheckForNull
public final FilePath getWorkspace()
Gets the directory where this build is being built.

Note to implementors: to control where the workspace is created, override AbstractBuild.AbstractBuildExecution.decideWorkspace(Node,WorkspaceList).

Returns:
null if the workspace is on a slave that's not connected. Note that once the build is completed, the workspace may be used to build something else, so the value returned from this method may no longer show a workspace as it was used for this build.
Since:
1.319

setWorkspace

protected void setWorkspace(FilePath ws)
Normally, a workspace is assigned by RunExecution, but this lets you set the workspace in case AbstractBuild is created without a build.


getModuleRoot

public final FilePath getModuleRoot()
Returns the root directory of the checked-out module.

This is usually where pom.xml, build.xml and so on exists.


getModuleRoots

public FilePath[] getModuleRoots()
Returns the root directories of all checked-out modules.

Some SCMs support checking out multiple modules into the same workspace. In these cases, the returned array will have a length greater than one.

Returns:
The roots of all modules checked out from the SCM.

getCulprits

@Exported
public Set<User> getCulprits()
List of users who committed a change since the last non-broken build till now.

This list at least always include people who made changes in this build, but if the previous build was a failure it also includes the culprit list from there.

Returns:
can be empty but never null.

hasParticipant

public boolean hasParticipant(User user)
Returns true if this user has made a commit to this build.

Since:
1.191

getHudsonVersion

public String getHudsonVersion()
Gets the version of Hudson that was used to build this job.

Since:
1.246

getBuildFingerprints

@Exported(name="fingerprint",
          inline=true,
          visibility=-1)
public Collection<Fingerprint> getBuildFingerprints()
get the fingerprints associated with this build

Returns:
never null

getChangeSet

@Exported
public ChangeLogSet<? extends ChangeLogSet.Entry> getChangeSet()
Gets the changes incorporated into this build.

Returns:
never null.

hasChangeSetComputed

public boolean hasChangeSetComputed()
Returns true if the changelog is already computed.


getEnvironment

public EnvVars getEnvironment(TaskListener log)
                       throws IOException,
                              InterruptedException
Description copied from class: Run
Returns the map that contains environmental variables to be used for launching processes for this build.

BuildSteps that invoke external processes should use this. This allows BuildWrappers and other project configurations (such as JDK selection) to take effect.

Unlike earlier Run.getEnvVars(), this map contains the whole environment, not just the overrides, so one can introspect values to change its behavior.

Overrides:
getEnvironment in class Run<P extends AbstractProject<P,R>,R extends AbstractBuild<P,R>>
Returns:
the map with the environmental variables. Never null.
Throws:
IOException
InterruptedException

getEnvironments

public EnvironmentList getEnvironments()
During the build, expose the environments contributed by BuildWrappers and others.

Since 1.444, executor thread that's doing the build can access mutable underlying list, which allows the caller to add/remove environments. The recommended way of adding environment is through BuildWrapper, but this might be handy for build steps who wants to expose additional environment variables to the rest of the build.

Returns:
can be empty list, but never null. Immutable.
Since:
1.437

due

public Calendar due()

getPersistentActions

public List<Action> getPersistentActions()

getSensitiveBuildVariables

public Set<String> getSensitiveBuildVariables()
Builds up a set of variable names that contain sensitive values that should not be exposed. The expectation is that this set is populated with keys returned by getBuildVariables() that should have their values masked for display purposes.

Since:
1.378

getBuildVariables

public Map<String,String> getBuildVariables()
Provides additional variables and their values to Builders.

This mechanism is used by MatrixConfiguration to pass the configuration values to the current build. It is up to Builders to decide whether they want to recognize the values or how to use them.

This also includes build parameters if a build is parameterized.

Returns:
The returned map is mutable so that subtypes can put more values.

getBuildVariableResolver

public final VariableResolver<String> getBuildVariableResolver()
Creates VariableResolver backed by getBuildVariables().


getTestResultAction

public AbstractTestResultAction getTestResultAction()
Gets AbstractTestResultAction associated with this build if any.


getAggregatedTestResultAction

public AggregatedTestResultAction getAggregatedTestResultAction()
Gets AggregatedTestResultAction associated with this build if any.


run

public abstract void run()
Invoked by Executor to performs a build.

Specified by:
run in interface Queue.Executable
Specified by:
run in interface Runnable

getWhyKeepLog

public String getWhyKeepLog()
Description copied from class: Run
If Run.isKeepLog() returns true, returns a short, human-readable sentence that explains why it's being kept.

Overrides:
getWhyKeepLog in class Run<P extends AbstractProject<P,R>,R extends AbstractBuild<P,R>>

getDownstreamRelationship

public Fingerprint.RangeSet getDownstreamRelationship(AbstractProject that)
Gets the dependency relationship from this build (as the source) and that project (as the sink.)

Returns:
range of build numbers that represent which downstream builds are using this build. The range will be empty if no build of that project matches this (or there is no Fingerprinter.FingerprintAction), but it'll never be null.

getDownstreamBuilds

public Iterable<AbstractBuild<?,?>> getDownstreamBuilds(AbstractProject<?,?> that)
Works like getDownstreamRelationship(AbstractProject) but returns the actual build objects, in ascending order.

Since:
1.150

getUpstreamRelationship

public int getUpstreamRelationship(AbstractProject that)
Gets the dependency relationship from this build (as the sink) and that project (as the source.)

Returns:
Build number of the upstream build that feed into this build, or -1 if no record is available (for example if there is no Fingerprinter.FingerprintAction, even if there is an Cause.UpstreamCause).

getUpstreamRelationshipBuild

public AbstractBuild<?,?> getUpstreamRelationshipBuild(AbstractProject<?,?> that)
Works like getUpstreamRelationship(AbstractProject) but returns the actual build object.

Returns:
null if no such upstream build was found, or it was found but the build record is already lost.

getDownstreamBuilds

public Map<AbstractProject,Fingerprint.RangeSet> getDownstreamBuilds()
Gets the downstream builds of this build, which are the builds of the downstream projects that use artifacts of this build.

Returns:
For each project with fingerprinting enabled, returns the range of builds (which can be empty if no build uses the artifact from this build or downstream is not AbstractProject.isFingerprintConfigured().)

getUpstreamBuilds

public Map<AbstractProject,Integer> getUpstreamBuilds()
Gets the upstream builds of this build, which are the builds of the upstream projects whose artifacts feed into this build.

Returns:
empty if there is no Fingerprinter.FingerprintAction (even if there is an Cause.UpstreamCause)
See Also:
getTransitiveUpstreamBuilds()

getTransitiveUpstreamBuilds

public Map<AbstractProject,Integer> getTransitiveUpstreamBuilds()
Works like getUpstreamBuilds() but also includes all the transitive dependencies as well.


getDependencyChanges

public Map<AbstractProject,AbstractBuild.DependencyChange> getDependencyChanges(AbstractBuild from)
Gets the changes in the dependency between the given build and this build.

Returns:
empty if there is no Fingerprinter.FingerprintAction

doStop

public void doStop(org.kohsuke.stapler.StaplerRequest req,
                   org.kohsuke.stapler.StaplerResponse rsp)
            throws IOException,
                   javax.servlet.ServletException
Deprecated. as of 1.489 Use doStop()

Throws:
IOException
javax.servlet.ServletException

doStop

public org.kohsuke.stapler.HttpResponse doStop()
                                        throws IOException,
                                               javax.servlet.ServletException
Stops this build if it's still going. If we use this/executor/stop URL, it causes 404 if the build is already killed, as Run.getExecutor() returns null.

Throws:
IOException
javax.servlet.ServletException
Since:
1.489


Copyright © 2004-2013. All Rights Reserved.