Class StepContext
java.lang.Object
org.jenkinsci.plugins.workflow.steps.StepContext
- All Implemented Interfaces:
com.google.common.util.concurrent.FutureCallback<Object>,Serializable
public abstract class StepContext
extends Object
implements com.google.common.util.concurrent.FutureCallback<Object>, Serializable
An implicit context available to every
Step.
In a flow, would be created by a FlowExecution.
It is serializable so a step which may survive a Jenkins restart is free to save it.
StepContext is only valid until the result is set via FutureCallback.
Beyond that point, callers are not allowed to call any of the methods.
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract booleanStepContexts get persisted, so they may not have the identity equality, but equals method would allow two instances to be compared.abstract <T> TTries to find a contextually available object.booleanhasBody()Checks if this step was called with a body.abstract inthashCode()Needs to be overridden as theequals(Object)method is overridden.abstract booleanisReady()Whetherget(java.lang.Class<T>)is ready to return values.abstract BodyInvokerPrepares for an asynchronous invocation of the body block that's given as an argument to this step invocation (in a host language dependent manner.)abstract voidabstract com.google.common.util.concurrent.ListenableFuture<Void>Requests that any state held by theStepExecutionbe saved to disk.abstract voidSets the overall result of the flow.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.google.common.util.concurrent.FutureCallback
onFailure
-
Constructor Details
-
StepContext
public StepContext()
-
-
Method Details
-
get
Tries to find a contextually available object. Some types known to be in use:Launcher- a way to fork processes
EnvVars- read access to environment variables associated with a run, typically used for launchers
FilePath- a “workspace” to use for example as from
Launcher.ProcStarter.pwd(hudson.FilePath) Computer- an agent we are running on
Executor- an executor slot on an agent we are running on
TaskListener- a place to send output (see
LogActionfor a flow) Run- a running build
FlowExecution- a running flow
FlowNode- a running node in a flow
- Parameters:
key- the kind of thing we want- Returns:
- that service, if available (which it should be if
StepDescriptor.getRequiredContext()includes it), else null - Throws:
IOException- IfStepContextgets serialized, Jenkins restarts, deserialized later, andSteptries to get additional context objects, it can be that the correspondingFlowExecutioncould be non-existent (for example, the run that was driving the flow could have failed to load.) This exception is thrown in such situations just likeFlowExecutionOwner.getthrows IOException.InterruptedException- See Also:
-
onSuccess
- Specified by:
onSuccessin interfacecom.google.common.util.concurrent.FutureCallback<Object>
-
isReady
public abstract boolean isReady()Whetherget(java.lang.Class<T>)is ready to return values. May be called to break deadlocks during reloading.- Returns:
- true normally, false if we are still reloading the context, for example during unpickling
-
saveState
Requests that any state held by theStepExecutionbe saved to disk. Useful when a long-running step has changed some instance fields (or the content of a final field) and needs these changes to be recorded. An implementation might in fact save more state than just the associated step execution, but it must save at least that much.- Returns:
- a future letting you know if and when the state was in fact saved
-
setResult
Sets the overall result of the flow. LikeRun.setResult(hudson.model.Result), can only make the result worse than it already is. Since some flows may have try-catch semantics, if a step fails to complete normally it is better to useFutureCallback.onFailure(Throwable)instead. (For example withFlowInterruptedException.)- Parameters:
r-Result.UNSTABLE, typically
-
newBodyInvoker
Prepares for an asynchronous invocation of the body block that's given as an argument to this step invocation (in a host language dependent manner.)When the block is completed normally or abnormally, you can have have the callback invoked. The invocation will not get scheduled until you start it.
StepDescriptor.takesImplicitBlockArgument()must be true.- Throws:
IllegalStateException- ifhasBody()is false
-
hasBody
public boolean hasBody()Checks if this step was called with a body.- Returns:
- true if
StepDescriptor.takesImplicitBlockArgument()is true, and such a body was in fact passed in; false otherwise
-
equals
StepContexts get persisted, so they may not have the identity equality, but equals method would allow two instances to be compared.- Overrides:
equalsin classObject- Returns:
- true if
StepContexts are for the same context for the same execution.
-
hashCode
public abstract int hashCode()Needs to be overridden as theequals(Object)method is overridden.
-