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,FullyNamedModelObject,HistoricalBuild,LazyBuildMixIn.LazyLoadingRun<P,,R> ModelObjectWithContextMenu,RunWithSCM<P,,R> OnMaster,org.kohsuke.stapler.StaplerProxy
- Direct Known Subclasses:
Build
Runs that build software.
For now this is primarily the common part of Build and MavenBuild.- Author:
- Kohsuke Kawaguchi
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclassclassDeprecated.static final classRepresents a change in the dependency.Nested classes/interfaces inherited from class hudson.model.Run
Run.Artifact, Run.ArtifactList, Run.BasicRunDetailFactory, Run.KeepLogBuildBadge, Run.RedirectUp, Run.RunExecution, Run.Runner, Run.RunnerAbortedException, Run.StatusSummarizer, Run.SummaryNested classes/interfaces inherited from interface hudson.ExtensionPoint
ExtensionPoint.LegacyInstancesAreScopedToHudsonNested classes/interfaces inherited from interface jenkins.model.ModelObjectWithContextMenu
ModelObjectWithContextMenu.ContextMenu, ModelObjectWithContextMenu.ContextMenuVisibility, ModelObjectWithContextMenu.MenuItem, ModelObjectWithContextMenu.MenuItemType -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected List<Environment> During the build this field remembersBuildWrapper.Environments 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
ConstructorsModifierConstructorDescriptionprotectedAbstractBuild(P job) protectedAbstractBuild(P project, File buildDir) protectedAbstractBuild(P job, Calendar timestamp) -
Method Summary
Modifier and TypeMethodDescriptionvoidAdds a new action.Method used for actually calculating the culprits from scratch.protected final BuildReference<R> Called byRunMapto obtain a reference to this run.org.kohsuke.stapler.HttpResponsedoStop()Stops this build if it's still going.voiddoStop(org.kohsuke.stapler.StaplerRequest req, org.kohsuke.stapler.StaplerResponse rsp) Deprecated.as of 1.489 UsedoStop()protected final voidCalled byRunMapto drop bi-directional links in preparation for deleting a build.due()Deprecated.UseActionable.getAction(Class)onAggregatedTestResultAction.final VariableResolver<String> CreatesVariableResolverbacked bygetBuildVariables().Provides additional variables and their values toBuilders.Returns aSlaveon 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 allChangeLogSets currently associated with this item.Gets the ids for allUsers 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 byBuildWrappers and others.Gets the version of Hudson that was used to build this job.final FilePathReturns 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 PAbstractBuild<?, ?> Gets the nearest ancestorAbstractBuildthat 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.intGets 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 FilePathGets the directory where this build is being built.booleanReturns true if the changelog is already computed.abstract voidrun()Invoked byExecutorto performs a build.protected voidsetBuiltOnStr(String builtOn) Allows subtypes to set the value ofbuiltOn.protected voidsetWorkspace(FilePath ws) Normally, a workspace is assigned byRun.RunExecution, but this lets you set the workspace in caseAbstractBuildis created without a build.booleanDetermines 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, getRunTabs, getSearchUrl, getStartTimeInMillis, getTarget, getTime, getTimeInMillis, getTimestamp, getTimestampString, getTimestampString2, getTransientActions, getUrl, hasCustomArtifactManager, 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, writeWholeLogToMethods inherited from class hudson.model.Actionable
addOrReplaceAction, doContextMenu, doContextMenu, getAction, getAction, getActions, getActions, getAllActions, removeAction, removeActions, replaceAction, replaceActionsMethods inherited from class hudson.model.AbstractModelObject
getSearch, getSearchIndex, getSearchName, requirePOST, sendError, sendError, sendError, sendError, sendError, sendError, sendError, sendErrorMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface hudson.security.AccessControlled
checkAnyPermission, checkPermission, hasAnyPermission, hasPermission, hasPermission, hasPermission2Methods inherited from interface hudson.model.DescriptorByNameOwner
getDescriptorByNameMethods inherited from interface jenkins.model.HistoricalBuild
getBuildStatusIconClassName, getBuildStatusUrl, getTruncatedDescriptionMethods inherited from interface hudson.model.Queue.Executable
getConsoleUrl, getEstimatedDuration, getParent, toStringMethods inherited from interface jenkins.scm.RunWithSCM
hasParticipantMethods inherited from interface hudson.search.SearchItem
getSearchGroup, getSearchIcon
-
Field Details
-
buildEnvironments
During the build this field remembersBuildWrapper.Environments 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:
getRunMixInin interfaceLazyBuildMixIn.LazyLoadingRun<P extends AbstractProject<P,R>, R extends AbstractBuild<P, R>>
-
createReference
Description copied from class:RunCalled byRunMapto obtain a reference to this run.- Overrides:
createReferencein 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:RunCalled byRunMapto drop bi-directional links in preparation for deleting a build.- Overrides:
dropLinksin classRun<P extends AbstractProject<P,R>, R extends AbstractBuild<P, R>> - See Also:
-
getPreviousBuild
- Overrides:
getPreviousBuildin classRun<P extends AbstractProject<P,R>, R extends AbstractBuild<P, R>> - See Also:
-
getNextBuild
- Overrides:
getNextBuildin classRun<P extends AbstractProject<P,R>, R extends AbstractBuild<P, R>> - See Also:
-
getBuiltOn
Returns aSlaveon 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 anAbstractBuildis made 'built' without actually running itsrun()method.- Since:
- 1.429
-
getRootBuild
Gets the nearest ancestorAbstractBuildthat 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.ExecutableAn 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:
getParentExecutablein 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 caseAbstractBuildis created without a build. -
getModuleRoot
Returns the root directory of the checked-out module.This is usually where
pom.xml,build.xmland 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:RunWithSCMGets the ids for allUsers included inRunWithSCM.getChangeSets()for this item.- Specified by:
getCulpritIdsin 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
RunWithSCMinstance with no culprits.
-
getCulprits
Description copied from interface:RunWithSCMList 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
Users will be created on-demand.- Specified by:
getCulpritsin 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:RunWithSCMDetermines whether culprits should be recalcuated or the existingRunWithSCM.getCulpritIds()should be used instead.- Specified by:
shouldCalculateCulpritsin 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:RunWithSCMMethod used for actually calculating the culprits from scratch. Called byRunWithSCM.getCulprits()and overrides ofRunWithSCM.getCulprits(). Does not persist culprits information.- Specified by:
calculateCulpritsin interfaceRunWithSCM<P extends AbstractProject<P,R>, R extends AbstractBuild<P, R>> - Returns:
- a non-null
SetofUsers 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:RunWithSCMGets allChangeLogSets currently associated with this item.- Specified by:
getChangeSetsin interfaceRunWithSCM<P extends AbstractProject<P,R>, R extends AbstractBuild<P, R>> - Returns:
- A possibly empty list of
ChangeLogSets.
-
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:RunReturns the map that contains environmental variables to be used for launching processes for this build.BuildSteps that invoke external processes should use this. This allowsBuildWrappers 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:
getEnvironmentin classRun<P extends AbstractProject<P,R>, R extends AbstractBuild<P, R>> - Returns:
- the map with the environmental variables.
- Throws:
IOExceptionInterruptedException
-
getEnvironments
During the build, expose the environments contributed byBuildWrappers 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 ARunAction2is handled specially. The action may have asummary.jellyview containing a<t:summary>or other<tr>.- Overrides:
addActionin 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 toBuilders.This mechanism is used by
MatrixConfigurationto pass the configuration values to the current build. It is up toBuilders 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
CreatesVariableResolverbacked bygetBuildVariables(). -
getTestResultAction
Deprecated.UseActionable.getAction(Class)onAbstractTestResultAction. -
getAggregatedTestResultAction
Deprecated.UseActionable.getAction(Class)onAggregatedTestResultAction. -
run
public abstract void run()Invoked byExecutorto performs a build.- Specified by:
runin interfaceQueue.Executable- Specified by:
runin interfaceRunnable
-
getWhyKeepLog
Description copied from class:RunIfRun.isKeepLog()returns true, returns a short, human-readable sentence that explains why it's being kept.- Overrides:
getWhyKeepLogin 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:
IOExceptionjavax.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:
IOExceptionjakarta.servlet.ServletException- Since:
- 1.489
-
Run.RunExecution