Class AbstractProject<P extends AbstractProject<P,R>,R extends AbstractBuild<P,R>>
- All Implemented Interfaces:
ExtensionPoint
,BuildableItem
,DescriptorByNameOwner
,Item
,ModelObject
,PersistenceRoot
,SubTask
,Queue.Task
,ResourceActivity
,Saveable
,SearchableModelObject
,SearchItem
,AccessControlled
,LazyBuildMixIn.LazyLoadingJob<P,
,R> Loadable
,ModelObjectWithChildren
,ModelObjectWithContextMenu
,ParameterizedJobMixIn.ParameterizedJob<P,
,R> ITask
,TriggeredItem
,OnMaster
,HasWidgets
,org.kohsuke.stapler.HttpDeletable
,org.kohsuke.stapler.StaplerOverridable
,org.kohsuke.stapler.StaplerProxy
- Direct Known Subclasses:
Project
Job
s that build software.
For now this is primarily the common part of Project
and MavenModule.- Author:
- Kohsuke Kawaguchi
- See Also:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
AbstractProject
subtypes should implement this base class as a descriptor.static class
Deprecated.static class
Because the downstream build is in progress, and we are configured to wait for that.static class
Because the upstream build is in progress, and we are configured to wait for that.static class
Deprecated.UseLabelValidator
instead.Nested classes/interfaces inherited from class hudson.model.Job
Job.BuildNumberAssigner, Job.DefaultBuildNumberAssigner, Job.LastItemListener, Job.SubItemBuildsLocationImpl
Nested classes/interfaces inherited from interface hudson.ExtensionPoint
ExtensionPoint.LegacyInstancesAreScopedToHudson
Nested classes/interfaces inherited from interface org.kohsuke.stapler.HttpDeletable
org.kohsuke.stapler.HttpDeletable.HttpDeletableDispatcher
Nested classes/interfaces inherited from interface jenkins.model.ModelObjectWithContextMenu
ModelObjectWithContextMenu.ContextMenu, ModelObjectWithContextMenu.ContextMenuVisibility, ModelObjectWithContextMenu.MenuItem, ModelObjectWithContextMenu.MenuItemType
-
Field Summary
Modifier and TypeFieldDescriptionstatic final Permission
Deprecated.Just useItem.CANCEL
.protected boolean
True to keep builds of this project in queue when downstream projects are building.protected boolean
True to keep builds of this project in queue when upstream projects are building.static final AlternativeUiTextProvider.Message<AbstractProject>
Deprecated.All the builds keyed by their build number.protected boolean
True to suspend new builds.Action
s contributed from subsidiary objects associated withAbstractProject
, such as from triggers, builders, publishers, etc.protected DescribableList<Trigger<?>,
TriggerDescriptor> List of allTrigger
s for this project.Fields inherited from class hudson.model.Job
HISTORY_ADAPTER, nextBuildNumber, properties, runIdMigrator
Fields inherited from class hudson.model.AbstractItem
description, displayName, name, PRONOUN, SKIP_PERMISSION_CHECK, TASK_NOUN
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescription_getRuns()
Gets all the runs.void
addProperty
(JobProperty<? super P> jobProp) AddsJobProperty
.protected final <T extends Describable<T>>
voidvoid
addTrigger
(Trigger<?> trigger) boolean
boolean
protected void
Builds the dependency graph.protected final <T extends Describable<T>>
List<T>buildDescribable
(org.kohsuke.stapler.StaplerRequest2 req, List<? extends Descriptor<T>> descriptors) protected final <T extends Describable<T>>
List<T>buildDescribable
(org.kohsuke.stapler.StaplerRequest req, List<? extends Descriptor<T>> descriptors, String prefix) Deprecated.As of 1.261.void
Checks the permission to see if the current user can abort this executable.boolean
checkout
(AbstractBuild build, Launcher launcher, BuildListener listener, File changelogFile) Creates an object which performs the actual execution of the task.void
disable()
void
doBuild
(org.kohsuke.stapler.StaplerRequest req, org.kohsuke.stapler.StaplerResponse rsp) void
doBuildWithParameters
(org.kohsuke.stapler.StaplerRequest req, org.kohsuke.stapler.StaplerResponse rsp) doCheckRetryCount
(String value) Validates the retry count Regexvoid
doConfigSubmit
(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) Accepts submission from the configuration page.org.kohsuke.stapler.HttpResponse
Wipes out the workspace.void
doPolling
(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) Schedules a new SCM polling command.doWs
(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) Serves the workspace files.void
enable()
static AbstractProject
findNearest
(String name) Finds aAbstractProject
that has the name closest to the given name.static AbstractProject
findNearest
(String name, ItemGroup context) Finds aAbstractProject
whose name (when referenced from the specified context) is closest to the given name.Gets actions contributed to this object.If this project is configured to be always built on this node, return thatNode
.Gets the textual representation of the assigned label as it was entered by the user.Looks up a build by its ID.getBuildByNumber
(int n) More efficient implementation.Type token for the corresponding build type.Returns the project if any of the downstream project is either building, or queued and not blocked by an upstream/downstream project build.Returns the project if any of the upstream project is either building, or queued and not blocked by an upstream/downstream project build.Gets the human readable display name to be rendered in the "Build Now" link.final List<AbstractProject>
Returns only those upstream projects that definesBuildTrigger
to this project.If the execution of this task should be blocked for temporary reasons, this method returns a non-null object explaining why.int
getDelay
(org.kohsuke.stapler.StaplerRequest req) Deprecated.as of 1.489 InjectTimeDuration
.final List<AbstractProject>
Gets the otherAbstractProject
s that should be built when a build of this project is completed.getEnvironment
(Node node, TaskListener listener) Creates an environment variable override for launching processes for this project.Returns candidate build for calculating the estimated duration of the current run.Returns the oldest build in the record.boolean
Used as the color of the status ball for the project.getJDK()
Gets the JDK that this project is configured with, or null.Returns the last build.Gets theNode
where this project was last built on.Deprecated.as of 1.319 SeegetWorkspace()
for a migration strategy.FilePath[]
Deprecated.as of 1.319 SeegetWorkspace()
for a migration strategy.getNearestBuild
(int n) Gets the youngest build #m that satisfiesn<=m
.getNearestOldBuild
(int n) Gets the latest build #m that satisfiesm<=n
.Get the term used in the UI to represent this kind ofAbstractProject
.abstract DescribableList<Publisher,
Descriptor<Publisher>> Returns the live list of allPublisher
s configured for this project.If this job is in the build queue, return its item.int
Quiet period for the job.Gets the dependency relationship map between this project (as the source) and that project (as the sink.)Set of labels relevant to this job.protected Set<ResourceActivity>
Set of child resource activities of the build of this project (override in child projects).List of necessary resources to perform the build of this project.AbstractProject<?,
?> Gets the nearest ancestorTopLevelItem
that's also anAbstractProject
.If a subset ofSubTask
s of aQueue.Task
needs to be collocated with otherSubTask
s, thoseSubTask
s should return the equal object here.getScm()
int
final R
Gets some build that has a live workspace.final FilePath
Gets a workspace for some build of this project.Obtains theSubTask
s that constitute this task.final Set<AbstractProject>
Gets all the downstream projects including transitive downstream projects.final Set<AbstractProject>
Gets all the upstream projects including transitive upstream projects.<T extends Trigger>
TgetTrigger
(Class<T> clazz) Gets the specific trigger, or null if the property is not configured for this job.Gets currently configured triggers.final List<AbstractProject>
final FilePath
Deprecated.as of 1.319 To support concurrent builds of the same project, this method is moved toAbstractBuild
.Deprecated.as of 1.319 Projects no longer have a fixed workspace, ands builds will find an available workspace viaWorkspaceList
for each build (furthermore, that happens after a build is started.) So aResource
representation for a workspace at the project level no longer makes sense.boolean
boolean
boolean
hasParticipant
(User user) Returns true if this user has made a commit to this project.boolean
Returns true if we should display "build now" iconboolean
Does this project perform concurrent builds?boolean
Used insidepanel.jelly
to decide whether to display the config/delete/build links.boolean
abstract boolean
True if the builds of this project producesFingerprint
records.boolean
Returns true if the build is in the queue.protected R
Loads an existing build record from disk.protected SearchIndexBuilder
Default implementation that returns empty index.protected R
newBuild()
Creates a new build of this project for immediate execution.void
When an item is created from scratch (instead of copied), this method will be invoked.void
Called right after when aItem
is loaded from disk.protected void
Does the real job of deleting the item.poll
(TaskListener listener) Checks if there's any update in SCM, and returns true if any is found.boolean
pollSCMChanges
(TaskListener listener) Deprecated.as of 1.346 Usepoll(TaskListener)
instead.protected final <T extends Describable<T>>
voidremoveFromList
(Descriptor<T> item, List<T> collection) void
Called fromRun
to remove it from this job.void
removeTrigger
(TriggerDescriptor trigger) static AbstractProject
resolveForCLI
(String name) Used for CLI binding.void
save()
Save the settings to a file.boolean
scheduleBuild
(int quietPeriod, Cause c, Action... actions) Schedules a build.scheduleBuild2
(int quietPeriod) Schedules a build, and returns aFuture
object to wait for the completion of the build.scheduleBuild2
(int quietPeriod, Action... actions) Provides a standard implementation ofSCMTriggerItem.scheduleBuild2(int, hudson.model.Action...)
to schedule a build with the ability to wait for its result.scheduleBuild2
(int quietPeriod, Cause c) Schedules a build of this project, and returns aFuture
object to wait for the completion of the build.scheduleBuild2
(int quietPeriod, Cause c, Action... actions) Schedules a build of this project, and returns aFuture
object to wait for the completion of the build.scheduleBuild2
(int quietPeriod, Cause c, Collection<? extends Action> actions) Schedules a build of this project, and returns aFuture
object to wait for the completion of the build.boolean
Schedules a polling of this project.void
Sets the assigned label.void
Assigns this job to the given node.void
setBlockBuildWhenDownstreamBuilding
(boolean b) void
setBlockBuildWhenUpstreamBuilding
(boolean b) void
setConcurrentBuild
(boolean b) void
setCustomWorkspace
(String customWorkspace) User-specified workspace directory, or null if it's up to Jenkins.void
setDisabled
(boolean disabled) void
Overwrites the JDK setting.void
setQuietPeriod
(Integer seconds) Sets the custom quiet period of this project, or revert to the global default if null is given.void
void
setScmCheckoutStrategy
(SCMCheckoutStrategy scmCheckoutStrategy) protected void
submit
(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) Derived class can override this to perform additional config submission work.protected void
submit
(org.kohsuke.stapler.StaplerRequest req, org.kohsuke.stapler.StaplerResponse rsp) Deprecated.boolean
Specifies whether this project may be disabled by the user.protected DescribableList<Trigger<?>,
TriggerDescriptor> triggers()
protected void
effectively deprecated.Methods inherited from class hudson.model.Job
assignBuildNumber, checkRename, createHistoryWidget, delete, doBuildStatus, doChildrenContextMenu, doChildrenContextMenu, doDescription, doDoRename, doRssAll, doRssChangelog, doRssFailed, fastUpdateNextBuildNumber, getACL, getAllJobs, getAllProperties, getBuildDir, getBuildDiscarder, getBuildForCLI, getBuildHealth, getBuildHealthReports, getBuilds, getBuilds, getBuildsAsMap, getBuildsByTimestamp, getBuildStatusIconClassName, getBuildStatusUrl, getBuildTimeGraph, getCharacteristicEnvVars, getDynamic, getDynamic, getEstimatedDuration, getLastBuildsOverThreshold, getLastCompletedBuild, getLastFailedBuild, getLastStableBuild, getLastSuccessfulBuild, getLastUnstableBuild, getLastUnsuccessfulBuild, getLogRotator, getNewBuilds, getNextBuildNumber, getOverrides, getPermalinks, getProperties, getProperty, getProperty, getTimeline, isBuilding, isHoldOffBuildUntilSave, isKeepDependencies, isLogUpdated, isNameEditable, logRotate, movedTo, onCopiedFrom, removeProperty, removeProperty, renameTo, saveNextBuildNumber, setBuildDiscarder, setLogRotator, supportsLogRotator, updateNextBuildNumber
Methods inherited from class hudson.model.AbstractItem
delete, delete, doCheckNewName, doConfigDotXml, doConfigDotXml, doConfirmRename, doDoDelete, doDoDelete, doReload, doSetName, doSubmitDescription, doSubmitDescription, getAbsoluteUrl, getApi, getConfigFile, getDescription, getDisplayName, getDisplayNameOrNull, getFullDisplayName, getFullName, getName, getParent, getRelativeDisplayNameFrom, getRelativeNameFromGroup, getRootDir, getSearchName, getSearchUrl, getShortUrl, getTarget, getTaskNoun, getUrl, load, setDescription, setDisplayName, setDisplayNameOrNull, toString, updateByXml, updateByXml, writeConfigDotXml, writeReplace
Methods inherited from class hudson.model.Actionable
addAction, addOrReplaceAction, doContextMenu, doContextMenu, getAction, getAction, getActions, getAllActions, removeAction, removeActions, replaceAction, replaceActions
Methods inherited from class hudson.model.AbstractModelObject
getSearch, getSearchIndex, 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, getACL, hasAnyPermission, hasPermission, hasPermission, hasPermission2
Methods inherited from interface hudson.model.BuildableItem
scheduleBuild, scheduleBuild
Methods inherited from interface hudson.model.DescriptorByNameOwner
getDescriptorByName
Methods inherited from interface jenkins.widgets.HasWidgets
getWidget, getWidgets
Methods inherited from interface jenkins.model.queue.ITask
hasReadPermission
Methods inherited from interface hudson.model.Item
delete, getAbsoluteUrl, getAllJobs, getDisplayName, getFullDisplayName, getFullName, getName, getParent, getRelativeNameFrom, getRelativeNameFrom, getShortUrl, getUrl, onCopiedFrom
Methods inherited from interface jenkins.model.ParameterizedJobMixIn.ParameterizedJob
doBuild, doBuild, doBuildWithParameters, doBuildWithParameters, doCancelQueue, doDisable, doEnable, getParameterizedJobMixIn, isParameterized, makeDisabled, scheduleBuild, scheduleBuild
Methods inherited from interface hudson.model.PersistenceRoot
getRootDir
Methods inherited from interface hudson.model.Queue.Task
getAffinityKey, getDefaultAuthentication, getDefaultAuthentication, getDefaultAuthentication2, getDefaultAuthentication2, getFullDisplayName, getName, getUrl, getWhyBlocked, isBuildBlocked
Methods inherited from interface hudson.model.ResourceActivity
getDisplayName
Methods inherited from interface hudson.search.SearchableModelObject
getSearch
Methods inherited from interface hudson.search.SearchItem
getSearchIndex, getSearchName, getSearchUrl
Methods inherited from interface hudson.model.queue.SubTask
getEstimatedDuration, getOwnerExecutable, getOwnerTask
-
Field Details
-
builds
@Restricted(org.kohsuke.accmod.restrictions.NoExternalUse.class) protected transient RunMap<R extends AbstractBuild<P,R>> buildsAll the builds keyed by their build number. Kept here for binary compatibility only; otherwise usebuildMixIn
. External code should usegetBuildByNumber(int)
orgetLastBuild()
and traverse viaRun.getPreviousBuild()
-
disabled
protected volatile boolean disabledTrue to suspend new builds. -
blockBuildWhenDownstreamBuilding
protected volatile boolean blockBuildWhenDownstreamBuildingTrue to keep builds of this project in queue when downstream projects are building. False by default to keep from breaking existing behavior. -
blockBuildWhenUpstreamBuilding
protected volatile boolean blockBuildWhenUpstreamBuildingTrue to keep builds of this project in queue when upstream projects are building. False by default to keep from breaking existing behavior. -
triggers
List of allTrigger
s for this project. -
transientActions
Action
s contributed from subsidiary objects associated withAbstractProject
, such as from triggers, builders, publishers, etc. We don't want to persist them separately, and these actions come and go as configuration change, so it's kept separate. -
ABORT
Deprecated.Just useItem.CANCEL
. -
BUILD_NOW_TEXT
Deprecated.
-
-
Constructor Details
-
AbstractProject
-
-
Method Details
-
getLazyBuildMixIn
- Specified by:
getLazyBuildMixIn
in interfaceLazyBuildMixIn.LazyLoadingJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>>
-
save
Description copied from class:AbstractItem
Save the settings to a file.- Specified by:
save
in interfaceItem
- Specified by:
save
in interfaceSaveable
- Overrides:
save
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Throws:
IOException
- if the persistence failed.
-
onCreatedFromScratch
public void onCreatedFromScratch()Description copied from interface:Item
When an item is created from scratch (instead of copied), this method will be invoked. Used as the post-construction initialization.- Specified by:
onCreatedFromScratch
in interfaceItem
- Overrides:
onCreatedFromScratch
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>>
-
onLoad
Description copied from class:AbstractItem
Called right after when aItem
is loaded from disk. This is an opportunity to do a post load processing.- Specified by:
onLoad
in interfaceItem
- Overrides:
onLoad
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> name
- Name of the directory (not a path --- just the name portion) from which the configuration was loaded. This usually becomes thename
of this item.- Throws:
IOException
-
triggers
@WithBridgeMethods(java.util.List.class) protected DescribableList<Trigger<?>,TriggerDescriptor> triggers() -
getEnvironment
@NonNull public EnvVars getEnvironment(@CheckForNull Node node, @NonNull TaskListener listener) throws IOException, InterruptedException Description copied from class:Job
Creates an environment variable override for launching processes for this project.This is for process launching outside the build execution (such as polling, tagging, deployment, etc.) that happens in a context of a specific job.
- Overrides:
getEnvironment
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Parameters:
node
- Node to eventually run a process on. The implementation must cope with this parameter being null (in which case none of the node specific properties would be reflected in the resulting override.)- Throws:
IOException
InterruptedException
-
performDelete
Description copied from class:AbstractItem
Does the real job of deleting the item.- Overrides:
performDelete
in classAbstractItem
- Throws:
IOException
InterruptedException
-
isConcurrentBuild
@Exported public boolean isConcurrentBuild()Does this project perform concurrent builds?- Specified by:
isConcurrentBuild
in interfaceQueue.Task
- Returns:
- by default, false
- Since:
- 1.319
-
setConcurrentBuild
- Throws:
IOException
-
getAssignedLabel
If this project is configured to be always built on this node, return thatNode
. Otherwise null.- Specified by:
getAssignedLabel
in interfaceSubTask
- Returns:
- by default, null
-
getRelevantLabels
Set of labels relevant to this job. This method is used to determine what agents are relevant to jobs, for example byView
s. It does not affect the scheduling. This information is informational and the best-effort basis.- Returns:
- Minimally it should contain
getAssignedLabel()
. The set can contain null element to correspond to the null return value fromgetAssignedLabel()
. - Since:
- 1.456
-
getAssignedLabelString
Gets the textual representation of the assigned label as it was entered by the user. -
setAssignedLabel
Sets the assigned label.- Throws:
IOException
-
setAssignedNode
Assigns this job to the given node. A convenience method oversetAssignedLabel(Label)
.- Throws:
IOException
-
getPronoun
Get the term used in the UI to represent this kind ofAbstractProject
. Must start with a capital letter.- Overrides:
getPronoun
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>>
-
getBuildNowText
Gets the human readable display name to be rendered in the "Build Now" link.- Specified by:
getBuildNowText
in interfaceParameterizedJobMixIn.ParameterizedJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Since:
- 1.401
- See Also:
-
getRootProject
Gets the nearest ancestorTopLevelItem
that's also anAbstractProject
.Some projects (such as matrix projects, Maven projects, or promotion processes) form a tree of jobs that acts as a single unit. This method can be used to find the top most dominating job that covers such a tree.
- Returns:
- never null.
- See Also:
-
getWorkspace
Deprecated.as of 1.319 To support concurrent builds of the same project, this method is moved toAbstractBuild
. For backward compatibility, this method returns the rightAbstractBuild.getWorkspace()
if called fromExecutor
, and otherwise the workspace of the last build.If you are calling this method during a build from an executor, switch it to
AbstractBuild.getWorkspace()
. If you are calling this method to serve a file from the workspace, doing a form validation, etc., then usegetSomeWorkspace()
Gets the directory where the module is checked out.- Returns:
- null if the workspace is on an agent that's not connected.
-
getSomeWorkspace
Gets a workspace for some build of this project.This is useful for obtaining a workspace for the purpose of form field validation, where exactly which build the workspace belonged is less important. The implementation makes a cursory effort to find some workspace.
- Returns:
- null if there's no available workspace.
- Since:
- 1.319
-
getSomeBuildWithWorkspace
Gets some build that has a live workspace.- Returns:
- null if no such build exists.
-
getModuleRoot
Deprecated.as of 1.319 SeegetWorkspace()
for a migration strategy.Returns the root directory of the checked-out module.This is usually where
pom.xml
,build.xml
and so on exists. -
getModuleRoots
Deprecated.as of 1.319 SeegetWorkspace()
for a migration strategy.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.
-
getQuietPeriod
public int getQuietPeriod()Description copied from interface:ParameterizedJobMixIn.ParameterizedJob
Quiet period for the job.- Specified by:
getQuietPeriod
in interfaceParameterizedJobMixIn.ParameterizedJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Returns:
- by default,
Jenkins.getQuietPeriod()
-
getScmCheckoutStrategy
-
setScmCheckoutStrategy
- Throws:
IOException
-
getScmCheckoutRetryCount
public int getScmCheckoutRetryCount() -
getHasCustomQuietPeriod
public boolean getHasCustomQuietPeriod() -
setQuietPeriod
Sets the custom quiet period of this project, or revert to the global default if null is given.- Throws:
IOException
-
hasCustomScmCheckoutRetryCount
public boolean hasCustomScmCheckoutRetryCount() -
isBuildable
public boolean isBuildable()Description copied from class:Job
Returns true if we should display "build now" icon- Specified by:
isBuildable
in interfaceParameterizedJobMixIn.ParameterizedJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Specified by:
isBuildable
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>>
-
isConfigurable
public boolean isConfigurable()Used insidepanel.jelly
to decide whether to display the config/delete/build links. -
blockBuildWhenDownstreamBuilding
public boolean blockBuildWhenDownstreamBuilding() -
setBlockBuildWhenDownstreamBuilding
- Throws:
IOException
-
blockBuildWhenUpstreamBuilding
public boolean blockBuildWhenUpstreamBuilding() -
setBlockBuildWhenUpstreamBuilding
- Throws:
IOException
-
isDisabled
@Exported public boolean isDisabled()- Specified by:
isDisabled
in interfaceParameterizedJobMixIn.ParameterizedJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>>
-
setDisabled
@Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) public void setDisabled(boolean disabled) - Specified by:
setDisabled
in interfaceParameterizedJobMixIn.ParameterizedJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>>
-
doCheckRetryCount
public FormValidation doCheckRetryCount(@QueryParameter String value) throws IOException, jakarta.servlet.ServletException Validates the retry count Regex- Throws:
IOException
jakarta.servlet.ServletException
-
supportsMakeDisabled
public boolean supportsMakeDisabled()Specifies whether this project may be disabled by the user. By default, it can be only if this is aTopLevelItem
; would be false for matrix configurations, etc.- Specified by:
supportsMakeDisabled
in interfaceParameterizedJobMixIn.ParameterizedJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Returns:
- true if the GUI should allow
ParameterizedJobMixIn.ParameterizedJob.doDisable()
and the like - Since:
- 1.475
-
disable
- Throws:
IOException
-
enable
- Throws:
IOException
-
getIconColor
Description copied from class:Job
Used as the color of the status ball for the project.- Overrides:
getIconColor
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>>
-
updateTransientActions
protected void updateTransientActions()effectively deprecated. Since using updateTransientActions correctly under concurrent environment requires a lock that can too easily cause deadlocks.Override
createTransientActions()
instead. -
createTransientActions
-
getPublishersList
Returns the live list of allPublisher
s configured for this project.This method couldn't be called
getPublishers()
because existing methods in sub-classes return different inconsistent types. -
addProperty
Description copied from class:Job
AddsJobProperty
.- Overrides:
addProperty
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Throws:
IOException
-
getProminentActions
-
doConfigSubmit
@POST public void doConfigSubmit(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException, Descriptor.FormException Description copied from class:Job
Accepts submission from the configuration page.- Overrides:
doConfigSubmit
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Throws:
IOException
jakarta.servlet.ServletException
Descriptor.FormException
-
scheduleBuild
Schedules a build. Important: the actions should be persistable without outside references (e.g. don't store references to this project). To provide parameters for a parameterized project, add a ParametersAction. If no ParametersAction is provided for such a project, one will be created with the default parameter values.- Parameters:
quietPeriod
- the quiet period to observerc
- the cause for this build which should be recordedactions
- a list of Actions that will be added to the build- Returns:
- whether the build was actually scheduled
-
scheduleBuild2
@WithBridgeMethods(java.util.concurrent.Future.class) public QueueTaskFuture<R> scheduleBuild2(int quietPeriod, Cause c, Action... actions) Schedules a build of this project, and returns aFuture
object to wait for the completion of the build.- Parameters:
actions
- For the convenience of the caller, this array can contain null, and those will be silently ignored.
-
scheduleBuild2
@WithBridgeMethods(java.util.concurrent.Future.class) public QueueTaskFuture<R> scheduleBuild2(int quietPeriod, Cause c, Collection<? extends Action> actions) Schedules a build of this project, and returns aFuture
object to wait for the completion of the build.- Parameters:
actions
- For the convenience of the caller, this collection can contain null, and those will be silently ignored.- Since:
- 1.383
-
scheduleBuild2
@WithBridgeMethods(java.util.concurrent.Future.class) public QueueTaskFuture<R> scheduleBuild2(int quietPeriod) Schedules a build, and returns aFuture
object to wait for the completion of the build.Production code shouldn't be using this, but for tests this is very convenient, so this isn't marked as deprecated.
-
scheduleBuild2
@WithBridgeMethods(java.util.concurrent.Future.class) public QueueTaskFuture<R> scheduleBuild2(int quietPeriod, Cause c) Schedules a build of this project, and returns aFuture
object to wait for the completion of the build. -
scheduleBuild2
Description copied from interface:ParameterizedJobMixIn.ParameterizedJob
Provides a standard implementation ofSCMTriggerItem.scheduleBuild2(int, hudson.model.Action...)
to schedule a build with the ability to wait for its result. That job method is often used during functional tests (JenkinsRule.assertBuildStatusSuccess
).- Specified by:
scheduleBuild2
in interfaceParameterizedJobMixIn.ParameterizedJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Parameters:
quietPeriod
- seconds to wait before starting (normally 0)actions
- various actions to associate with the scheduling, such asParametersAction
orCauseAction
- Returns:
- a handle by which you may wait for the build to complete (or just start); or null if the build was not actually scheduled for some reason
-
schedulePolling
public boolean schedulePolling()Schedules a polling of this project.- See Also:
-
isInQueue
public boolean isInQueue()Returns true if the build is in the queue.- Overrides:
isInQueue
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>>
-
getQueueItem
Description copied from class:Job
If this job is in the build queue, return its item.- Overrides:
getQueueItem
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>>
-
getJDK
Gets the JDK that this project is configured with, or null. -
setJDK
Overwrites the JDK setting.- Throws:
IOException
-
getAuthToken
- Specified by:
getAuthToken
in interfaceParameterizedJobMixIn.ParameterizedJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>>
-
_getRuns
Description copied from class:Job
Gets all the runs. The resulting map must be treated immutable (by employing copy-on-write semantics.) The map is descending order, with newest builds at the top.- Specified by:
_getRuns
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - See Also:
-
removeRun
Description copied from class:Job
Called fromRun
to remove it from this job. The files are deleted already. So all the callee needs to do is to remove a reference from thisJob
.- Specified by:
removeRun
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - See Also:
-
getBuild
Looks up a build by its ID. More efficient implementation.- Overrides:
getBuild
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - See Also:
-
getBuildByNumber
More efficient implementation.- Overrides:
getBuildByNumber
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Parameters:
n
- The build number.- Returns:
- null if no such build exists.
- See Also:
-
getFirstBuild
Returns the oldest build in the record. More efficient implementation.- Overrides:
getFirstBuild
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - See Also:
-
getLastBuild
Description copied from class:Job
Returns the last build.- Overrides:
getLastBuild
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - See Also:
-
getNearestBuild
Description copied from class:Job
Gets the youngest build #m that satisfiesn<=m
. This is useful when you'd like to fetch a build but the exact build might be already gone (deleted, rotated, etc.)- Overrides:
getNearestBuild
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - See Also:
-
getNearestOldBuild
Description copied from class:Job
Gets the latest build #m that satisfiesm<=n
. This is useful when you'd like to fetch a build but the exact build might be already gone (deleted, rotated, etc.)- Overrides:
getNearestOldBuild
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - See Also:
-
getEstimatedDurationCandidates
Description copied from class:Job
Returns candidate build for calculating the estimated duration of the current run. Returns the 3 last successful (stable or unstable) builds, if there are any. Failing to find 3 of those, it will return up to 3 last unsuccessful builds. In any case it will not go more than 6 builds into the past to avoid costly build loading.- Overrides:
getEstimatedDurationCandidates
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - See Also:
-
getBuildClass
Type token for the corresponding build type. The build class must have two constructors: one taking this project type; and one taking this project type, thenFile
. -
newBuild
Creates a new build of this project for immediate execution.- Throws:
IOException
-
loadBuild
Loads an existing build record from disk.- Throws:
IOException
-
getActions
Gets actions contributed to this object.A new
Action
can be added byActionable.addAction(hudson.model.Action)
.If you are reading the list, rather than modifying it, use
Actionable.getAllActions()
instead. This method by default returns only persistent actions (though some subclasses override it to return an extended unmodifiable list).Note that this method returns a read-only view of
Action
s.BuildStep
s and others who want to add a project action should do so by implementingBuildStep.getProjectActions(AbstractProject)
.- Overrides:
getActions
in classActionable
- Returns:
- a possibly empty list
- See Also:
-
getLastBuiltOn
Gets theNode
where this project was last built on.- Specified by:
getLastBuiltOn
in interfaceSubTask
- Returns:
- null if no information is available (for example, if no build was done yet.)
-
getSameNodeConstraint
Description copied from interface:SubTask
If a subset ofSubTask
s of aQueue.Task
needs to be collocated with otherSubTask
s, thoseSubTask
s should return the equal object here. If null, the execution unit isn't under a colocation constraint.- Specified by:
getSameNodeConstraint
in interfaceSubTask
- Returns:
- by default, null
-
getCauseOfBlockage
If the execution of this task should be blocked for temporary reasons, this method returns a non-null object explaining why.Otherwise this method returns null, indicating that the build can proceed right away.
This can be used to define mutual exclusion that goes beyond
ResourceActivity.getResourceList()
.A project must be blocked if its own previous build is in progress, or if the blockBuildWhenUpstreamBuilding option is true and an upstream project is building, but derived classes can also check other conditions.
- Specified by:
getCauseOfBlockage
in interfaceQueue.Task
- Returns:
- by default, null
-
getBuildingDownstream
Returns the project if any of the downstream project is either building, or queued and not blocked by an upstream/downstream project build.This means eventually there will be an automatic triggering of the given project (provided that all builds went smoothly.)
-
getBuildingUpstream
Returns the project if any of the upstream project is either building, or queued and not blocked by an upstream/downstream project build.This means eventually there will be an automatic triggering of the given project (provided that all builds went smoothly.)
-
getSubTasks
Description copied from interface:Queue.Task
Obtains theSubTask
s that constitute this task.The collection returned by this method must also contain the primary
SubTask
represented by thisQueue.Task
object itself as the first element. The returned value is read-only.At least size 1.
- Specified by:
getSubTasks
in interfaceQueue.Task
- Returns:
- by default,
this
-
createExecutable
Description copied from interface:SubTask
Creates an object which performs the actual execution of the task.- Specified by:
createExecutable
in interfaceParameterizedJobMixIn.ParameterizedJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Specified by:
createExecutable
in interfaceSubTask
- Returns:
- executable to be launched or null if the executable cannot be
created (e.g.
AbstractProject
is disabled) - Throws:
IOException
- executable cannot be created
-
checkAbortPermission
public void checkAbortPermission()Description copied from interface:Queue.Task
Checks the permission to see if the current user can abort this executable. Returns normally from this method if it's OK.NOTE: If you have implemented
AccessControlled
this defaults tocheckPermission(hudson.model.Item.CANCEL);
- Specified by:
checkAbortPermission
in interfaceQueue.Task
-
hasAbortPermission
public boolean hasAbortPermission()- Specified by:
hasAbortPermission
in interfaceITask
- Returns:
true
if the current user can cancel the current task. NOTE: If you have implementedAccessControlled
this returns by defaulthasPermission(Item.CANCEL)
-
getWorkspaceResource
Deprecated.as of 1.319 Projects no longer have a fixed workspace, ands builds will find an available workspace viaWorkspaceList
for each build (furthermore, that happens after a build is started.) So aResource
representation for a workspace at the project level no longer makes sense.If you need to lock a workspace while you do some computation, see the source code of
pollSCMChanges(TaskListener)
for how to obtain a lock of a workspace throughWorkspaceList
.Gets theResource
that represents the workspace of this project. Useful for locking and mutual exclusion control. -
getResourceList
List of necessary resources to perform the build of this project.- Specified by:
getResourceList
in interfaceResourceActivity
- Returns:
- never null
-
getResourceActivities
Set of child resource activities of the build of this project (override in child projects).- Returns:
- The set of child resource activities of the build of this project.
-
checkout
public boolean checkout(AbstractBuild build, Launcher launcher, BuildListener listener, File changelogFile) throws IOException, InterruptedException - Throws:
IOException
InterruptedException
-
pollSCMChanges
Deprecated.as of 1.346 Usepoll(TaskListener)
instead.Checks if there's any update in SCM, and returns true if any is found. -
poll
Checks if there's any update in SCM, and returns true if any is found.The implementation is responsible for ensuring mutual exclusion between polling and builds if necessary.
- Since:
- 1.345
-
hasParticipant
Returns true if this user has made a commit to this project.- Since:
- 1.191
-
getScm
-
setScm
- Throws:
IOException
-
addTrigger
- Throws:
IOException
-
removeTrigger
- Throws:
IOException
-
addToList
protected final <T extends Describable<T>> void addToList(T item, List<T> collection) throws IOException - Throws:
IOException
-
removeFromList
protected final <T extends Describable<T>> void removeFromList(Descriptor<T> item, List<T> collection) throws IOException - Throws:
IOException
-
getTriggers
Description copied from interface:TriggeredItem
Gets currently configured triggers. You may use<p:config-trigger/>
to configure them.- Specified by:
getTriggers
in interfaceTriggeredItem
- Returns:
- a map from trigger kind to instance
-
getTrigger
Gets the specific trigger, or null if the property is not configured for this job. -
isFingerprintConfigured
public abstract boolean isFingerprintConfigured()True if the builds of this project producesFingerprint
records. -
getDownstreamProjects
Gets the otherAbstractProject
s that should be built when a build of this project is completed. -
getDownstreamProjectsForApi
@Exported(name="downstreamProjects") @Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) public List<AbstractProject> getDownstreamProjectsForApi() -
getUpstreamProjects
-
getUpstreamProjectsForApi
@Exported(name="upstreamProjects") @Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) public List<AbstractProject> getUpstreamProjectsForApi() -
getBuildTriggerUpstreamProjects
Returns only those upstream projects that definesBuildTrigger
to this project. This is a subset ofgetUpstreamProjects()
No longer used in the UI.
- Returns:
- A List of upstream projects that has a
BuildTrigger
to this project.
-
getTransitiveUpstreamProjects
Gets all the upstream projects including transitive upstream projects.- Since:
- 1.138
-
getTransitiveDownstreamProjects
Gets all the downstream projects including transitive downstream projects.- Since:
- 1.138
-
getRelationship
Gets the dependency relationship map between this project (as the source) and that project (as the sink.)- Returns:
- can be empty but not null. build number of this project to the build numbers of that project.
-
buildDependencyGraph
Builds the dependency graph. Since 1.558, not abstract and by default includes dependencies contributed bytriggers()
. -
makeSearchIndex
Description copied from class:AbstractModelObject
Default implementation that returns empty index.- Overrides:
makeSearchIndex
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>>
-
doBuild
@Deprecated public void doBuild(org.kohsuke.stapler.StaplerRequest req, org.kohsuke.stapler.StaplerResponse rsp) throws IOException, javax.servlet.ServletException Deprecated.- Throws:
IOException
javax.servlet.ServletException
-
getDelay
@Deprecated public int getDelay(org.kohsuke.stapler.StaplerRequest req) throws javax.servlet.ServletException Deprecated.as of 1.489 InjectTimeDuration
.Computes the delay by taking the default value and the override in the request parameter into the account.- Throws:
javax.servlet.ServletException
-
doBuildWithParameters
@Deprecated public void doBuildWithParameters(org.kohsuke.stapler.StaplerRequest req, org.kohsuke.stapler.StaplerResponse rsp) throws IOException, javax.servlet.ServletException Deprecated.- Throws:
IOException
javax.servlet.ServletException
-
doPolling
public void doPolling(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException Description copied from interface:ParameterizedJobMixIn.ParameterizedJob
Schedules a new SCM polling command.- Specified by:
doPolling
in interfaceParameterizedJobMixIn.ParameterizedJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Throws:
IOException
jakarta.servlet.ServletException
-
submit
protected void submit(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException, Descriptor.FormException Description copied from class:Job
Derived class can override this to perform additional config submission work.- Overrides:
submit
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Throws:
IOException
jakarta.servlet.ServletException
Descriptor.FormException
- Since:
- 2.475
-
submit
@Deprecated protected void submit(org.kohsuke.stapler.StaplerRequest req, org.kohsuke.stapler.StaplerResponse rsp) throws IOException, javax.servlet.ServletException, Descriptor.FormException Deprecated.- Overrides:
submit
in classJob<P extends AbstractProject<P,
R>, R extends AbstractBuild<P, R>> - Throws:
IOException
javax.servlet.ServletException
Descriptor.FormException
-
buildDescribable
@Deprecated protected final <T extends Describable<T>> List<T> buildDescribable(org.kohsuke.stapler.StaplerRequest req, List<? extends Descriptor<T>> descriptors, String prefix) throws Descriptor.FormException, javax.servlet.ServletException Deprecated.As of 1.261. UsebuildDescribable(StaplerRequest2, List)
instead.- Throws:
Descriptor.FormException
javax.servlet.ServletException
-
buildDescribable
protected final <T extends Describable<T>> List<T> buildDescribable(org.kohsuke.stapler.StaplerRequest2 req, List<? extends Descriptor<T>> descriptors) throws Descriptor.FormException, jakarta.servlet.ServletException - Throws:
Descriptor.FormException
jakarta.servlet.ServletException
-
doWs
public DirectoryBrowserSupport doWs(org.kohsuke.stapler.StaplerRequest2 req, org.kohsuke.stapler.StaplerResponse2 rsp) throws IOException, jakarta.servlet.ServletException, InterruptedException Serves the workspace files.- Throws:
IOException
jakarta.servlet.ServletException
InterruptedException
-
doDoWipeOutWorkspace
public org.kohsuke.stapler.HttpResponse doDoWipeOutWorkspace() throws IOException, InterruptedExceptionWipes out the workspace.- Throws:
IOException
InterruptedException
-
findNearest
Finds aAbstractProject
that has the name closest to the given name. -
findNearest
Finds aAbstractProject
whose name (when referenced from the specified context) is closest to the given name.- Since:
- 1.419
- See Also:
-
resolveForCLI
@CLIResolver public static AbstractProject resolveForCLI(String name) throws org.kohsuke.args4j.CmdLineException Used for CLI binding.- Throws:
org.kohsuke.args4j.CmdLineException
-
getCustomWorkspace
-
setCustomWorkspace
User-specified workspace directory, or null if it's up to Jenkins.Normally a project uses the workspace location assigned by its parent container, but sometimes people have builds that have hard-coded paths.
This is not
File
because it may have to hold a path representation on another OS.If this path is relative, it's resolved against
Node.getRootPath()
on the node where this workspace is prepared.- Throws:
IOException
- Since:
- 1.410
-
BlockedBecauseOfBuildInProgress
instead.