|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objecthudson.tasks.BuildStepCompatibilityLayer
hudson.tasks.Publisher
hudson.tasks.Recorder
hudson.tasks.BuildTrigger
public class BuildTrigger
Triggers builds of other projects.
Despite what the name suggests, this class doesn't actually trigger other jobs
as a part of perform(hudson.model.AbstractBuild, hudson.Launcher, hudson.model.BuildListener)
method. Its main job is to simply augment
DependencyGraph
. Jobs are responsible for triggering downstream jobs
on its own, because dependencies may come from other sources.
This class, however, does provide the execute(AbstractBuild, BuildListener, BuildTrigger)
method as a convenience method to invoke downstream builds.
Nested Class Summary | |
---|---|
static class |
BuildTrigger.DescriptorImpl
|
Nested classes/interfaces inherited from class hudson.tasks.Publisher |
---|
Publisher.DescriptorExtensionListImpl |
Nested classes/interfaces inherited from interface hudson.ExtensionPoint |
---|
ExtensionPoint.LegacyInstancesAreScopedToHudson |
Nested classes/interfaces inherited from interface hudson.tasks.BuildStep |
---|
BuildStep.PublisherList |
Field Summary |
---|
Fields inherited from interface hudson.tasks.BuildStep |
---|
BUILDERS, PUBLISHERS |
Constructor Summary | |
---|---|
BuildTrigger(Collection<? extends AbstractProject> childProjects,
Result threshold)
|
|
BuildTrigger(List<AbstractProject> childProjects,
Result threshold)
|
|
BuildTrigger(String childProjects,
boolean evenIfUnstable)
|
|
BuildTrigger(String childProjects,
Result threshold)
|
|
BuildTrigger(String childProjects,
String threshold)
|
Method Summary | |
---|---|
void |
buildDependencyGraph(AbstractProject owner,
DependencyGraph graph)
Invoked from AbstractProject.buildDependencyGraph(DependencyGraph) . |
static boolean |
execute(AbstractBuild build,
BuildListener listener)
Convenience method to trigger downstream builds. |
static boolean |
execute(AbstractBuild build,
BuildListener listener,
BuildTrigger trigger)
Deprecated. since 1.341; use execute(AbstractBuild,BuildListener) |
List<AbstractProject> |
getChildProjects()
Deprecated. as of 1.406 Use getChildProjects(ItemGroup) |
List<AbstractProject> |
getChildProjects(AbstractProject owner)
|
List<AbstractProject> |
getChildProjects(ItemGroup base)
|
String |
getChildProjectsValue()
|
BuildStepMonitor |
getRequiredMonitorService()
Declares the scope of the synchronization monitor this BuildStep expects from outside. |
Result |
getThreshold()
|
boolean |
hasSame(AbstractProject owner,
Collection<? extends AbstractProject> projects)
Checks if this trigger has the exact same set of children as the given list. |
boolean |
hasSame(Collection<? extends AbstractProject> projects)
Deprecated. as of 1.406 Use hasSame(AbstractProject, Collection) |
boolean |
needsToRunAfterFinalized()
Return true if this Publisher needs to run after the build result is
fully finalized. |
boolean |
onJobRenamed(String oldName,
String newName)
Called from BuildTrigger.DescriptorImpl.ItemListenerImpl when a job is renamed. |
boolean |
perform(AbstractBuild build,
Launcher launcher,
BuildListener listener)
Runs the step over the given build and reports the progress to the listener. |
Methods inherited from class hudson.tasks.Recorder |
---|
getDescriptor |
Methods inherited from class hudson.tasks.Publisher |
---|
all, getProjectAction, prebuild |
Methods inherited from class hudson.tasks.BuildStepCompatibilityLayer |
---|
getProjectAction, getProjectActions, perform, prebuild |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface hudson.tasks.BuildStep |
---|
getProjectAction, getProjectActions, prebuild |
Constructor Detail |
---|
public BuildTrigger(String childProjects, boolean evenIfUnstable)
@DataBoundConstructor public BuildTrigger(String childProjects, String threshold)
public BuildTrigger(String childProjects, Result threshold)
public BuildTrigger(List<AbstractProject> childProjects, Result threshold)
public BuildTrigger(Collection<? extends AbstractProject> childProjects, Result threshold)
Method Detail |
---|
public String getChildProjectsValue()
public Result getThreshold()
public List<AbstractProject> getChildProjects()
getChildProjects(ItemGroup)
public List<AbstractProject> getChildProjects(AbstractProject owner)
public List<AbstractProject> getChildProjects(ItemGroup base)
public BuildStepMonitor getRequiredMonitorService()
BuildStep
BuildStep
expects from outside.
This method is introduced for preserving compatibility with plugins written for earlier versions of Hudson, which never run multiple builds of the same job in parallel. Such plugins often assume that the outcome of the previous build is completely available, which is no longer true when we do concurrent builds.
To minimize the necessary code change for such plugins, BuildStep
implementations can request
Hudson to externally perform synchronization before executing them. This behavior is as follows:
BuildStepMonitor.BUILD
BuildStep
is only executed after the previous build is fully
completed (thus fully restoring the earlier semantics of one build at a time.)
BuildStepMonitor.STEP
BuildStep
is only executed after the same step in the previous build is completed.
For build steps that use a weaker assumption and only rely on the output from the same build step of
the early builds, this improves the concurrency.
BuildStepMonitor.NONE
CheckPoint
s
to perform necessary synchronizations.
If you are migrating BuildStep
implementations written for earlier versions of Hudson,
here's what you can do:
BuildStepMonitor.BUILD
to demand the backward compatible behavior from Hudson,
and make no other changes to the code. This will prevent users from reaping the benefits of concurrent
builds, but at least your plugin will work correctly, and therefore this is a good easy first step.
Run.getPreviousBuild()
), then you can return BuildStepMonitor.NONE
without making further
code changes and you are done with migration.
Action
s that you added in the previous build by yourself,
then you only need BuildStepMonitor.STEP
scope synchronization. Return it from this method
,and you are done with migration without any further code changes.
BuildStepMonitor.NONE
and use
CheckPoint
s directly in your code. The general idea is to call CheckPoint.block()
before
you try to access the state from the previous build.
For plugins written against earlier versions of Hudson, calling this method results in
AbstractMethodError
.
getRequiredMonitorService
in interface BuildStep
public boolean hasSame(AbstractProject owner, Collection<? extends AbstractProject> projects)
public boolean hasSame(Collection<? extends AbstractProject> projects)
hasSame(AbstractProject, Collection)
public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener)
BuildStep
A plugin can contribute the action object to Actionable.getActions()
so that a 'report' becomes a part of the persisted data of Build
.
This is how JUnit plugin attaches the test report to a build page, for example.
perform
in interface BuildStep
perform
in class BuildStepCompatibilityLayer
Using the return value to indicate success/failure should
be considered deprecated, and implementations are encouraged
to throw AbortException
to indicate a failure.
@Deprecated public static boolean execute(AbstractBuild build, BuildListener listener, BuildTrigger trigger)
execute(AbstractBuild,BuildListener)
public static boolean execute(AbstractBuild build, BuildListener listener)
build
- The current build. Its downstreams will be triggered.listener
- Receives the progress report.public void buildDependencyGraph(AbstractProject owner, DependencyGraph graph)
DependencyDeclarer
AbstractProject.buildDependencyGraph(DependencyGraph)
.
buildDependencyGraph
in interface DependencyDeclarer
owner
- The project that owns the publishers, builders, etc.
This information is conceptually redundant, as those objects are
only configured against the single owner, but this information is
nevertheless passed in since often owner information is not recorded.
Never null.graph
- The dependency graph being built. Never null.public boolean needsToRunAfterFinalized()
Publisher
Publisher
needs to run after the build result is
fully finalized.
The execution of normal Publisher
s are considered within a part
of the build. This allows publishers to mark the build as a failure, or
to include their execution time in the total build time.
So normally, that is the preferrable behavior, but in a few cases
this is problematic. One of such cases is when a publisher needs to
trigger other builds, which in turn need to see this build as a
completed build. Those plugins that need to do this can return true
from this method, so that the BuildStepCompatibilityLayer.perform(AbstractBuild, Launcher, BuildListener)
method is called after the build is marked as completed.
When Publisher
behaves this way, note that they can no longer
change the build status anymore.
needsToRunAfterFinalized
in class Publisher
public boolean onJobRenamed(String oldName, String newName)
BuildTrigger.DescriptorImpl.ItemListenerImpl
when a job is renamed.
BuildTrigger
is changed and needs to be saved.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |