diff --git a/core/src/main/java/hudson/model/Build.java b/core/src/main/java/hudson/model/Build.java index 7119f0c5bc..f2d2380197 100644 --- a/core/src/main/java/hudson/model/Build.java +++ b/core/src/main/java/hudson/model/Build.java @@ -29,6 +29,8 @@ import hudson.tasks.BuildStep; import hudson.tasks.BuildTrigger; import hudson.tasks.BuildWrapper; import hudson.tasks.Builder; +import hudson.tasks.Recorder; +import hudson.tasks.Notifier; import java.io.File; import java.io.IOException; @@ -41,6 +43,39 @@ import java.util.logging.Logger; /** * A build of a {@link Project}. * + *

Steps of a build

+ *

+ * Roughly speaking, a {@link Build} goes through the following stages: + * + *

+ *
SCM checkout + *
Hudson decides which directory to use for a build, then the source code is checked out + * + *
Pre-build steps + *
Everyone gets their {@link BuildStep#prebuild(AbstractBuild, BuildListener)} invoked + * to indicate that the build is starting + * + *
Build wrapper set up + *
{@link BuildWrapper#setUp(AbstractBuild, Launcher, BuildListener)} is invoked. This is normally + * to prepare an environment for the build. + * + *
Builder runs + *
{@link Builder#perform(AbstractBuild, Launcher, BuildListener)} is invoked. This is where + * things that are useful to users happen, like calling Ant, Make, etc. + * + *
Recorder runs + *
{@link Recorder#perform(AbstractBuild, Launcher, BuildListener)} is invoked. This is normally + * to record the output from the build, such as test results. + * + *
Notifier runs + *
{@link Notifier#perform(AbstractBuild, Launcher, BuildListener)} is invoked. This is normally + * to send out notifications, based on the results determined so far. + *
+ * + *

+ * And beyond that, the build is considered complete, and from then on {@link Build} object is there to + * keep the record of what happened in this build. + * * @author Kohsuke Kawaguchi */ public abstract class Build

,B extends Build>