public class BuildRemote extends RootModuleVersionJobAbstractImpl
In order to support parallelism, BuildReferenceGraph is used to build a
ReferenceGraph and then manage the submitting of the builds in the
right order. Multiple independent builds can be submitted simultaneously,
letting the remote build system manage the scheduling. Submitted builds are
monitored and new builds are submitted until all ModuleVersion's
needing to be built are built.
Since BuildReferenceGraph is used, this class derives from
RootModuleVersionJobAbstractImpl, but performs its job by overriding
RootModuleVersionJobAbstractImpl.performJob() and delegating to
RootModuleVersionJobAbstractImpl.performJob() to build the ReferenceGraph before
performing the rest of the processing.
Although this class requires a workspace in order to build the ReferenceGraph,
it is not actually used to perform the builds. The notion of build scope as
supported by Build is therefore not implemented and all matched
ModuleVersion's are built.
However this class allows building all ModuleVersion's within the ReferencePath's to the matched ModuleVersion's, on top of the matched ones. This allows to easily request building a ModuleVersion as well as all other ModuleVersion's that depend directly or indirectly on it.
When intermediate ModuleVersion's in the ReferencePath's to the matched ModuleVersions's are not also built, the submission of multiple builds simultaneously will not honor the transitive relation between the ModuleVersion's, meaning that in a ReferencePath A -> B -> C, if A and C are matched but not B, A and C will be submitted simultaneously. A will not wait for the completion of C before being submitted.
RootModuleVersionJobAbstractImpl.UnsyncChangesBehavior| Modifier and Type | Field and Description |
|---|---|
static String |
BUILD_LOG_FILE_NAMES_SUFFIX
Suffix for build log file names.
|
static String |
RUNTIME_PROPERTY_BUILD_LOG_DIR
Runtime property that specifies the directory for build logs.
|
static String |
RUNTIME_PROPERTY_BUILD_MONITORING_CYCLE_DELAY
Runtime property that specifies the delay between build monitoring cycles, in
milliseconds.
|
static String |
RUNTIME_PROPERTY_IND_BUILD_REFERENCE_PATH
Runtime property of type boolean that specifies whether to also build
ModuleVersion's within the ReferencePath's to the matched ModuleVersion's.
|
static String |
RUNTIME_PROPERTY_IND_INCLUDE_NODE_PATH_IN_BUILD_LOG_FILE_NAMES
Runtime property that specifies if the
NodePath of the Module
ClassificationNode should be included in build log file names. |
static String |
RUNTIME_PROPERTY_IND_INCLUDE_VERSION_IN_BUILD_LOG_FILE_NAMES
Runtime property that specifies if the
Version of the
ModuleVersion should be included in build log file names. |
indAvoidReentry, indDepthFirst, indHandleDynamicVersion, indHandleStaticVersion, indListModuleVersionRootChanged, listActionsPerformed, listModuleVersionRoot, moduleReentryAvoider, MSG_PATTERN_KEY_ACTIONS_PERFORMED, MSG_PATTERN_KEY_CANNOT_PROCEED_WITH_UNSYNC_LOCAL_CHANGES, MSG_PATTERN_KEY_CONFLICTS_WHILE_UPDATING, MSG_PATTERN_KEY_DO_YOU_WANT_TO_UPDATE_UNSYNC_REMOTE_CHANGES, MSG_PATTERN_KEY_INITIATING_TRAVERSAL_REFERENCE_GRAPH_ROOT_MODULE_VERSION, MSG_PATTERN_KEY_MODULE_VERSION_ALREADY_PROCESSED, MSG_PATTERN_KEY_MULTIPLE_WORKSPACE_DIRECTORIES_FOR_MODULE, MSG_PATTERN_KEY_NO_ACTIONS_PERFORMED, MSG_PATTERN_KEY_ROOT_MODULE_VERSION_NOT_KNOWN, MSG_PATTERN_KEY_TRAVERSAL_REFERENCE_GRAPH_ROOT_MODULE_VERSION_COMPLETED, MSG_PATTERN_KEY_UPDATE_CHANGED_ROOT_MODULE_VERSION, MSG_PATTERN_KEY_UPDATE_ROOT_MODULE_VERSION_TO_DEFAULT, MSG_PATTERN_KEY_UPDATE_ROOT_MODULE_VERSION_TO_WORKSPACE_DIRECTORY_VERSION, MSG_PATTERN_KEY_UPDATING, MSG_PATTERN_KEY_VERSION_DOES_NOT_EXIST, MSG_PATTERN_KEY_VISITING_LEAF_MODULE_VERSION, MSG_PATTERN_KEY_VISITING_LEAF_REFERENCE_MATCHED, referencePath, RUNTIME_PROPERTY_PROJECT_CODE, RUNTIME_PROPERTY_SYNC_WORKSPACE_DIR, unsyncChangesBehaviorLocal, unsyncChangesBehaviorRemote| Constructor and Description |
|---|
BuildRemote(List<org.azyva.dragom.model.ModuleVersion> listModuleVersionRoot)
Constructor.
|
| Modifier and Type | Method and Description |
|---|---|
void |
performJob()
Main method for performing the job.
|
afterIterateListModuleVersionRoot, beforeIterateListModuleVersionRoot, beforeValidateListModuleVersionRoot, getProjectCode, getReferencePathMatcher, isListModuleVersionRootChanged, iterateListModuleVersionRoot, setIndAvoidReentry, setIndDepthFirst, setIndHandleDynamicVersion, setIndHandleStaticVersion, setIndListModuleVersionRootChanged, setReferencePathMatcherProvided, setUnsyncChangesBehaviorLocal, setUnsyncChangesBehaviorRemote, setupReferencePathMatcherForProjectCode, validateListModuleVersionRoot, visitMatchedModuleVersion, visitModuleVersionpublic static final String RUNTIME_PROPERTY_IND_BUILD_REFERENCE_PATH
A runtime property is used so that it is possible to set a default in a context that is more global than the tool invocation. But often this runtime property will be provided by the user as a tool initialization property for each tool invocation.
It is accessed in the context of each Module so that its value can be
different for each Module. But in general it will be defined for the root
NodePath only.
public static final String RUNTIME_PROPERTY_BUILD_MONITORING_CYCLE_DELAY
When the RemoteBuilderPlugin is invoked to submit a build, the monitoring of the build status is performed by querying the RemoteBuildHandle object that the plugin returned. This typically involves communication with the remote build system and must be paced correctly to balance the need for fast feedback and the desire to avoid overwhelming the remote build system with requests.
public static final String RUNTIME_PROPERTY_BUILD_LOG_DIR
If not specified, build logs will be extracted to the root of the workspace directory.
If relative, it is relative to the current directory.
It is accessed in the context of each Module so that its value can be
different for each Module. But in general it will be defined for the root
NodePath only.
public static final String RUNTIME_PROPERTY_IND_INCLUDE_NODE_PATH_IN_BUILD_LOG_FILE_NAMES
NodePath of the Module
ClassificationNode should be included in build log file names. The
default value is false.
It is accessed in the context of each Module so that its value can be
different for each Module. But in general it will be defined for the root
NodePath only.
public static final String RUNTIME_PROPERTY_IND_INCLUDE_VERSION_IN_BUILD_LOG_FILE_NAMES
Version of the
ModuleVersion should be included in build log file names. The default
value is false.
It is the version string that is included (excluding the VersionType).
It is accessed in the context of each Module so that its value can be
different for each Module. But in general it will be defined for the root
NodePath only.
public static final String BUILD_LOG_FILE_NAMES_SUFFIX
public BuildRemote(List<org.azyva.dragom.model.ModuleVersion> listModuleVersionRoot)
listModuleVersionRoot - List of root ModuleVersion's on which to initiate
the traversal of the reference graphs.public void performJob()
RootModuleVersionJobAbstractImpl
This class provides a default implementation which calls
RootModuleVersionJobAbstractImpl.beforeValidateListModuleVersionRoot(),
RootModuleVersionJobAbstractImpl.validateListModuleVersionRoot(),
RootModuleVersionJobAbstractImpl.beforeIterateListModuleVersionRoot(),
RootModuleVersionJobAbstractImpl.afterIterateListModuleVersionRoot(). If ever this behavior is not
appropriate for the job, subclasses can simply override the method.
Alternatively, the methods mentioned above can be overridden individually.
performJob in class RootModuleVersionJobAbstractImplCopyright © 2015–2016 AZYVA INC.. All rights reserved.