Class AbstractBuild<P extends AbstractProject<P,R>,R extends AbstractBuild<P,R>>
- All Implemented Interfaces:
ExtensionPoint
,DescriptorByNameOwner
,ModelObject
,PersistenceRoot
,Queue.Executable
,Saveable
,SearchableModelObject
,SearchItem
,AccessControlled
,Comparable<R>
,Runnable
,WithConsoleUrl
,HistoricalBuild
,LazyBuildMixIn.LazyLoadingRun<P,
,R> ModelObjectWithContextMenu
,RunWithSCM<P,
,R> OnMaster
,org.kohsuke.stapler.StaplerProxy
- Direct Known Subclasses:
Build
Run
s that build software.
For now this is primarily the common part of Build
and MavenBuild.- Author:
- Kohsuke Kawaguchi
- See Also:
-
Nested Class Summary
Modifier and TypeClassDescriptionclass
class
Deprecated.static final class
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.StatusSummarizer, Run.Summary
Nested classes/interfaces inherited from interface hudson.ExtensionPoint
ExtensionPoint.LegacyInstancesAreScopedToHudson
Nested classes/interfaces inherited from interface jenkins.model.ModelObjectWithContextMenu
ModelObjectWithContextMenu.ContextMenu, ModelObjectWithContextMenu.ContextMenuVisibility, ModelObjectWithContextMenu.MenuItem, ModelObjectWithContextMenu.MenuItemType
-
Field Summary
Modifier and TypeFieldDescriptionprotected List<Environment>
During the build this field remembersBuildWrapper.Environment
s created byBuildWrapper
.Fields inherited from class hudson.model.Run
ARTIFACTS, charset, DELETE, description, duration, FEED_ADAPTER, FEED_ADAPTER_LATEST, LIST_CUTOFF, nextBuild, number, ORDER_BY_DATE, PERMISSIONS, previousBuild, project, QUEUE_ID_UNKNOWN, result, SKIP_PERMISSION_CHECK, timestamp, UPDATE, XSTREAM, XSTREAM2
-
Constructor Summary
ModifierConstructorDescriptionprotected
AbstractBuild
(P job) protected
AbstractBuild
(P project, File buildDir) protected
AbstractBuild
(P job, Calendar timestamp) -
Method Summary
Modifier and TypeMethodDescriptionvoid
Adds a new action.Method used for actually calculating the culprits from scratch.protected final BuildReference<R>
Called byRunMap
to obtain a reference to this run.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 UsedoStop()
protected final void
Called byRunMap
to drop bi-directional links in preparation for deleting a build.due()
Deprecated.UseActionable.getAction(Class)
onAggregatedTestResultAction
.final VariableResolver<String>
CreatesVariableResolver
backed bygetBuildVariables()
.Provides additional variables and their values toBuilder
s.Returns aSlave
on which this build was done.Returns the name of the agent it was built on; null or "" if built by the built-in node.ChangeLogSet<? extends ChangeLogSet.Entry>
Gets the changes incorporated into this build.List<ChangeLogSet<? extends ChangeLogSet.Entry>>
Gets allChangeLogSet
s currently associated with this item.Gets the ids for allUser
s included inRunWithSCM.getChangeSets()
for this item.List of users who committed a change since the last non-broken build till now.Gets the changes in the dependency between the given build and this build.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 likegetDownstreamRelationship(AbstractProject)
but returns the actual build objects, in ascending order.Gets the dependency relationship from this build (as the source) and that project (as the sink.)Returns the map that contains environmental variables to be used for launching processes for this build.During the build, expose the environments contributed byBuildWrapper
s and others.Gets the version of Hudson that was used to build this job.final FilePath
Returns the root directory of the checked-out module.FilePath[]
Returns the root directories of all checked-out modules.An umbrella executable (such as aRun
) of which this is one part.final P
AbstractBuild<?,
?> Gets the nearest ancestorAbstractBuild
that belongs to the root project of getProject() that dominates/governs/encompasses this build.final LazyBuildMixIn.RunMixIn<P,
R> Builds up a set of variable names that contain sensitive values that should not be exposed.Deprecated.UseActionable.getAction(Class)
onAbstractTestResultAction
.Works likegetUpstreamBuilds()
but also includes all the transitive dependencies as well.Gets the upstream builds of this build, which are the builds of the upstream projects whose artifacts feed into this build.int
Gets the dependency relationship from this build (as the sink) and that project (as the source.)AbstractBuild<?,
?> getUpstreamRelationshipBuild
(AbstractProject<?, ?> that) Works likegetUpstreamRelationship(AbstractProject)
but returns the actual build object.getUpUrl()
Deprecated.navigation through a hierarchy should be done through breadcrumbs, do not add a link using this methodIfRun.isKeepLog()
returns true, returns a short, human-readable sentence that explains why it's being kept.final FilePath
Gets the directory where this build is being built.boolean
Returns true if the changelog is already computed.abstract void
run()
Invoked byExecutor
to performs a build.protected void
setBuiltOnStr
(String builtOn) Allows subtypes to set the value ofbuiltOn
.protected void
setWorkspace
(FilePath ws) Normally, a workspace is assigned byRun.RunExecution
, but this lets you set the workspace in caseAbstractBuild
is created without a build.boolean
Determines whether culprits should be recalcuated or the existingRunWithSCM.getCulpritIds()
should be used instead.Methods inherited from class hudson.model.Run
_this, canToggleLogKeep, compareTo, delete, deleteArtifacts, doArtifact, doBuildNumber, doBuildStatus, doBuildTimestamp, doConfigSubmit, doConsoleText, doConsoleText, doDoDelete, doDoDelete, doProgressiveLog, doSubmitDescription, doToggleLogKeep, execute, fromExternalizableId, getAbsoluteUrl, getACL, getApi, getArtifactManager, getArtifacts, getArtifactsDir, getArtifactsUpTo, getBadgeActions, getBuildFingerprints, getBuildsOverThreshold, getBuildStatusSummary, getCause, getCauses, getCharacteristicEnvVars, getCharset, getConsoleUrl, getDescription, getDisplayName, getDuration, getDurationString, getDynamic, getDynamic, getEnvironment, getEnvVars, getEstimatedDuration, getExecutor, getExternalizableId, getFullDisplayName, getHasArtifacts, getIconColor, getId, getLog, getLog, getLogFile, getLogInputStream, getLogReader, getLogText, getNumber, getOneOffExecutor, getParameterValues, getParent, getPreviousBuildInProgress, getPreviousBuildsOverThreshold, getPreviousBuiltBuild, getPreviousCompletedBuild, getPreviousFailedBuild, getPreviousNotFailedBuild, getPreviousSuccessfulBuild, getQueueId, getResult, getRootDir, getSearchUrl, getStartTimeInMillis, getTarget, getTime, getTimeInMillis, getTimestamp, getTimestampString, getTimestampString2, getTransientActions, getUrl, hasCustomDisplayName, hasntStartedYet, isBuilding, isInProgress, isKeepLog, isLogUpdated, keepLog, keepLog, makeSearchIndex, onEndBuilding, onLoad, onStartBuilding, pickArtifactManager, reload, run, save, setDescription, setDisplayName, setQueueId, setResult, submit, toString, updateSymlinks, writeLogTo, writeReplace, writeWholeLogTo
Methods inherited from class hudson.model.Actionable
addOrReplaceAction, doContextMenu, doContextMenu, getAction, getAction, getActions, getActions, getAllActions, removeAction, removeActions, replaceAction, replaceActions
Methods inherited from class hudson.model.AbstractModelObject
getSearch, getSearchIndex, getSearchName, requirePOST, sendError, sendError, sendError, 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.security.AccessControlled
checkAnyPermission, checkPermission, hasAnyPermission, hasPermission, hasPermission, hasPermission2
Methods inherited from interface hudson.model.DescriptorByNameOwner
getDescriptorByName
Methods inherited from interface jenkins.model.HistoricalBuild
getBuildStatusIconClassName, getBuildStatusUrl, getTruncatedDescription
Methods inherited from interface hudson.model.Queue.Executable
getConsoleUrl, getEstimatedDuration, getParent, toString
Methods inherited from interface jenkins.scm.RunWithSCM
hasParticipant
-
Field Details
-
buildEnvironments
During the build this field remembersBuildWrapper.Environment
s created byBuildWrapper
. This design is bit ugly but forced due to compatibility.
-
-
Constructor Details
-
AbstractBuild
- Throws:
IOException
-
AbstractBuild
-
AbstractBuild
- Throws:
IOException
-
-
Method Details
-
getProject
-
getRunMixIn
- Specified by:
getRunMixIn
in interfaceLazyBuildMixIn.LazyLoadingRun<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>>
-
createReference
Description copied from class:Run
Called byRunMap
to obtain a reference to this run.- Overrides:
createReference
in classRun<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Returns:
- Reference to the build. Never null
- See Also:
-
dropLinks
protected final void dropLinks()Description copied from class:Run
Called byRunMap
to drop bi-directional links in preparation for deleting a build.- Overrides:
dropLinks
in classRun<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - See Also:
-
getPreviousBuild
- Overrides:
getPreviousBuild
in classRun<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - See Also:
-
getNextBuild
- Overrides:
getNextBuild
in classRun<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - See Also:
-
getBuiltOn
Returns aSlave
on which this build was done.- Returns:
- null, for example if the agent that this build run no longer exists.
-
getBuiltOnStr
Returns the name of the agent it was built on; null or "" if built by the built-in node. (null happens when we read old record that didn't have this information.) -
setBuiltOnStr
Allows subtypes to set the value ofbuiltOn
. This is used for those implementations where anAbstractBuild
is made 'built' without actually running itsrun()
method.- Since:
- 1.429
-
getRootBuild
Gets the nearest ancestorAbstractBuild
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:
-
getParentExecutable
Description copied from interface:Queue.Executable
An umbrella executable (such as aRun
) of which this is one part. Some invariants:getParent().getOwnerTask() == getParent() || getParentExecutable().getParent() == getParent().getOwnerTask()
getParent().getOwnerExecutable() == null || getParentExecutable() == getParent().getOwnerExecutable()
- Specified by:
getParentExecutable
in interfaceQueue.Executable
- Returns:
- a distinct executable (never
this
, unlike the default ofSubTask.getOwnerTask()
!); or null if this executable was already at top level - See Also:
-
getUpUrl
Deprecated.navigation through a hierarchy should be done through breadcrumbs, do not add a link using this methodUsed 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
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 an agent 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
Normally, a workspace is assigned byRun.RunExecution
, but this lets you set the workspace in caseAbstractBuild
is created without a build. -
getModuleRoot
Returns the root directory of the checked-out module.This is usually where
pom.xml
,build.xml
and so on exists. -
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.
-
getCulpritIds
Description copied from interface:RunWithSCM
Gets the ids for allUser
s included inRunWithSCM.getChangeSets()
for this item.- Specified by:
getCulpritIds
in interfaceRunWithSCM<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Returns:
- A set of user IDs, or null if this was the first time the method was called or the build is still running
for a
RunWithSCM
instance with no culprits.
-
getCulprits
Description copied from interface:RunWithSCM
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.
Missing
User
s will be created on-demand.- Specified by:
getCulprits
in interfaceRunWithSCM<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Returns:
- can be empty but never null.
-
shouldCalculateCulprits
public boolean shouldCalculateCulprits()Description copied from interface:RunWithSCM
Determines whether culprits should be recalcuated or the existingRunWithSCM.getCulpritIds()
should be used instead.- Specified by:
shouldCalculateCulprits
in interfaceRunWithSCM<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Returns:
- True if culprits should be recalcuated, false otherwise.
-
calculateCulprits
Description copied from interface:RunWithSCM
Method used for actually calculating the culprits from scratch. Called byRunWithSCM.getCulprits()
and overrides ofRunWithSCM.getCulprits()
. Does not persist culprits information.- Specified by:
calculateCulprits
in interfaceRunWithSCM<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Returns:
- a non-null
Set
ofUser
s associated with this item.
-
getHudsonVersion
Gets the version of Hudson that was used to build this job.- Since:
- 1.246
-
getChangeSet
Gets the changes incorporated into this build.- Returns:
- never null.
-
getChangeSets
Description copied from interface:RunWithSCM
Gets allChangeLogSet
s currently associated with this item.- Specified by:
getChangeSets
in interfaceRunWithSCM<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Returns:
- A possibly empty list of
ChangeLogSet
s.
-
hasChangeSetComputed
public boolean hasChangeSetComputed()Returns true if the changelog is already computed. -
getEnvironment
@NonNull public EnvVars getEnvironment(@NonNull 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.BuildStep
s that invoke external processes should use this. This allowsBuildWrapper
s 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 classRun<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Returns:
- the map with the environmental variables.
- Throws:
IOException
InterruptedException
-
getEnvironments
During the build, expose the environments contributed byBuildWrapper
s 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
-
addAction
Adds a new action. Note: calls toActionable.getAllActions()
that happen before calls to this method may not see the update. Note: this method will always modify the actions ARunAction2
is handled specially. The action may have asummary.jelly
view containing a<t:summary>
or other<tr>
.- Overrides:
addAction
in classRun<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>>
-
getPersistentActions
-
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 bygetBuildVariables()
that should have their values masked for display purposes.- Since:
- 1.378
-
getBuildVariables
Provides additional variables and their values toBuilder
s.This mechanism is used by
MatrixConfiguration
to pass the configuration values to the current build. It is up toBuilder
s 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
CreatesVariableResolver
backed bygetBuildVariables()
. -
getTestResultAction
Deprecated.UseActionable.getAction(Class)
onAbstractTestResultAction
. -
getAggregatedTestResultAction
Deprecated.UseActionable.getAction(Class)
onAggregatedTestResultAction
. -
run
public abstract void run()Invoked byExecutor
to performs a build.- Specified by:
run
in interfaceQueue.Executable
- Specified by:
run
in interfaceRunnable
-
getWhyKeepLog
Description copied from class:Run
IfRun.isKeepLog()
returns true, returns a short, human-readable sentence that explains why it's being kept.- Overrides:
getWhyKeepLog
in classRun<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>>
-
getDownstreamRelationship
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
Works likegetDownstreamRelationship(AbstractProject)
but returns the actual build objects, in ascending order.- Since:
- 1.150
-
getUpstreamRelationship
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 anCause.UpstreamCause
).
-
getUpstreamRelationshipBuild
Works likegetUpstreamRelationship(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
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
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 anCause.UpstreamCause
) - See Also:
-
getTransitiveUpstreamBuilds
Works likegetUpstreamBuilds()
but also includes all the transitive dependencies as well. -
getDependencyChanges
Gets the changes in the dependency between the given build and this build.- Returns:
- empty if there is no
Fingerprinter.FingerprintAction
-
doStop
@Deprecated public void doStop(org.kohsuke.stapler.StaplerRequest req, org.kohsuke.stapler.StaplerResponse rsp) throws IOException, javax.servlet.ServletException Deprecated.as of 1.489 UsedoStop()
- Throws:
IOException
javax.servlet.ServletException
-
doStop
public org.kohsuke.stapler.HttpResponse doStop() throws IOException, jakarta.servlet.ServletExceptionStops this build if it's still going. If we use this/executor/stop URL, it causes 404 if the build is already killed, asRun.getExecutor()
returns null.- Throws:
IOException
jakarta.servlet.ServletException
- Since:
- 1.489
-
Run.RunExecution