You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ct...@apache.org on 2009/01/14 17:46:47 UTC
svn commit: r734441 [3/3] - in /continuum/trunk: ./
continuum-api/src/main/java/org/apache/continuum/builder/
continuum-api/src/main/java/org/apache/continuum/builder/distributed/
continuum-api/src/main/java/org/apache/continuum/builder/distributed/man...
Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AbstractBuildAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AbstractBuildAction.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AbstractBuildAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AbstractBuildAction.java Wed Jan 14 08:31:04 2009
@@ -22,7 +22,7 @@
import java.util.Set;
import org.apache.continuum.buildmanager.BuildManagerException;
-import org.apache.maven.continuum.buildqueue.BuildProjectTask;
+import org.apache.continuum.taskqueue.BuildProjectTask;
import org.apache.maven.continuum.model.project.BuildResult;
import org.apache.maven.continuum.project.ContinuumProjectState;
import org.codehaus.plexus.taskqueue.Task;
Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultAction.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultAction.java Wed Jan 14 08:31:04 2009
@@ -22,10 +22,13 @@
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.continuum.buildmanager.BuildManagerException;
+import org.apache.continuum.builder.distributed.manager.DistributedBuildManager;
+import org.apache.continuum.builder.utils.ContinuumBuildConstant;
import org.apache.maven.continuum.ContinuumException;
import org.apache.maven.continuum.configuration.ConfigurationException;
import org.apache.maven.continuum.model.project.BuildResult;
import org.apache.maven.continuum.model.project.Project;
+import org.apache.maven.continuum.project.ContinuumProjectState;
import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
import org.apache.maven.continuum.web.util.StateGenerator;
import org.apache.struts2.ServletActionContext;
@@ -36,6 +39,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
+import java.util.Map;
/**
@@ -46,6 +50,11 @@
public class BuildResultAction
extends AbstractBuildAction
{
+ /**
+ * @plexus.requirement
+ */
+ private DistributedBuildManager distributedBuildManager;
+
private Project project;
private BuildResult buildResult;
@@ -62,6 +71,8 @@
private String projectGroupName = "";
+ private int projectGroupId;
+
public String execute()
throws ContinuumException, ConfigurationException, IOException, BuildManagerException
{
@@ -78,27 +89,54 @@
// check if there are surefire results to display
project = getContinuum().getProject( getProjectId() );
- buildResult = getContinuum().getBuildResult( getBuildId() );
-
- // directory contains files ?
- File surefireReportsDirectory =
- getContinuum().getConfiguration().getTestReportsDirectory( buildId, getProjectId() );
- File[] files = surefireReportsDirectory.listFiles();
- if ( files == null )
+ if ( getContinuum().getConfiguration().isDistributedBuildEnabled() && project.getState() == ContinuumProjectState.BUILDING )
{
+ Map<String, Object> map = distributedBuildManager.getBuildResult( project.getId() );
+
+ if ( map == null )
+ {
+ projectGroupId = project.getProjectGroup().getId();
+
+ return ERROR;
+ }
+
+ if ( map.size() > 0 )
+ {
+ buildResult = ContinuumBuildConstant.getBuildResult( map, null );
+
+ buildOutput = ContinuumBuildConstant.getBuildOutput( map );
+ }
+ changeSet = null;
+
hasSurefireResults = false;
+
+ this.setCanDelete( false );
}
else
{
- hasSurefireResults = files.length > 0;
- }
- changeSet = getContinuum().getChangesSinceLastUpdate( getProjectId() );
+ buildResult = getContinuum().getBuildResult( getBuildId() );
- buildOutput = getBuildOutputText();
+ // directory contains files ?
+ File surefireReportsDirectory =
+ getContinuum().getConfiguration().getTestReportsDirectory( buildId, getProjectId() );
+ File[] files = surefireReportsDirectory.listFiles();
+ if ( files == null )
+ {
+ hasSurefireResults = false;
+ }
+ else
+ {
+ hasSurefireResults = files.length > 0;
+ }
+ changeSet = getContinuum().getChangesSinceLastUpdate( getProjectId() );
+
+ buildOutput = getBuildOutputText();
- state = StateGenerator.generate( buildResult.getState(), ServletActionContext.getRequest().getContextPath() );
+ state = StateGenerator.generate( buildResult.getState(), ServletActionContext.getRequest().getContextPath() );
+
+ this.setCanDelete( this.canRemoveBuildResult( buildResult ) );
+ }
- this.setCanDelete( this.canRemoveBuildResult( buildResult ) );
return SUCCESS;
}
@@ -206,4 +244,8 @@
return projectGroupName;
}
+ public int getProjectGroupId()
+ {
+ return projectGroupId;
+ }
}
Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/CancelBuildAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/CancelBuildAction.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/CancelBuildAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/CancelBuildAction.java Wed Jan 14 08:31:04 2009
@@ -29,8 +29,8 @@
import org.apache.continuum.buildmanager.BuildManagerException;
import org.apache.continuum.buildmanager.BuildsManager;
import org.apache.continuum.model.project.ProjectScmRoot;
+import org.apache.continuum.taskqueue.BuildProjectTask;
import org.apache.maven.continuum.ContinuumException;
-import org.apache.maven.continuum.buildqueue.BuildProjectTask;
import org.apache.maven.continuum.model.project.Project;
import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
import org.codehaus.plexus.taskqueue.Task;
Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java Wed Jan 14 08:31:04 2009
@@ -20,15 +20,12 @@
*/
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
import org.apache.maven.continuum.ContinuumException;
import org.apache.maven.continuum.model.project.BuildDefinition;
import org.apache.maven.continuum.model.project.Project;
-import org.apache.maven.continuum.project.ContinuumProjectState;
import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.dag.CycleDetectedException;
Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/ConfigurationAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/ConfigurationAction.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/ConfigurationAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/ConfigurationAction.java Wed Jan 14 08:31:04 2009
@@ -60,7 +60,9 @@
private int numberOfAllowedBuildsinParallel = 1;
private boolean requireReleaseOutput;
-
+
+ private boolean distributedBuildEnabled;
+
public void prepare()
{
ConfigurationService configuration = getContinuum().getConfiguration();
@@ -108,6 +110,8 @@
String requireRelease = ServletActionContext.getRequest().getParameter( "requireReleaseOutput" );
setRequireReleaseOutput( new Boolean( requireRelease ) );
+
+ distributedBuildEnabled = configuration.isDistributedBuildEnabled();
}
public String input()
@@ -150,7 +154,7 @@
{
configuration.setDeploymentRepositoryDirectory( null );
}
-
+
configuration.setUrl( baseUrl );
configuration.setInitialized( true );
@@ -169,6 +173,8 @@
configuration.setReleaseOutputDirectory( null );
}
+ configuration.setDistributedBuildEnabled( distributedBuildEnabled );
+
configuration.store();
return SUCCESS;
@@ -253,4 +259,14 @@
{
this.numberOfAllowedBuildsinParallel = numberOfAllowedBuildsinParallel;
}
+
+ public boolean isDistributedBuildEnabled()
+ {
+ return distributedBuildEnabled;
+ }
+
+ public void setDistributedBuildEnabled( boolean distributedBuildEnabled )
+ {
+ this.distributedBuildEnabled = distributedBuildEnabled;
+ }
}
Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/QueuesAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/QueuesAction.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/QueuesAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/QueuesAction.java Wed Jan 14 08:31:04 2009
@@ -27,13 +27,21 @@
import org.apache.commons.lang.ArrayUtils;
import org.apache.continuum.buildmanager.BuildManagerException;
-import org.apache.maven.continuum.buildqueue.BuildProjectTask;
+import org.apache.continuum.builder.distributed.manager.DistributedBuildManager;
+import org.apache.continuum.model.project.ProjectScmRoot;
+import org.apache.continuum.taskqueue.BuildProjectTask;
+import org.apache.continuum.taskqueue.CheckOutTask;
+import org.apache.continuum.taskqueue.PrepareBuildProjectsTask;
+import org.apache.continuum.taskqueue.manager.TaskQueueManager;
+import org.apache.maven.continuum.Continuum;
import org.apache.maven.continuum.model.project.Project;
-import org.apache.maven.continuum.scm.queue.CheckOutTask;
+import org.apache.maven.continuum.model.project.ProjectGroup;
+import org.apache.maven.continuum.project.ContinuumProjectState;
import org.apache.maven.continuum.security.ContinuumRoleConstants;
import org.apache.maven.continuum.web.action.ContinuumActionSupport;
import org.apache.maven.continuum.web.exception.AuthenticationRequiredException;
import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
+import org.apache.maven.continuum.web.model.DistributedBuildSummary;
import org.codehaus.plexus.logging.LogEnabled;
import org.codehaus.plexus.redback.rbac.Resource;
import org.codehaus.plexus.taskqueue.Task;
@@ -50,7 +58,9 @@
public class QueuesAction
extends ContinuumActionSupport
implements SecureAction, LogEnabled
-{
+{
+ private static final String DISTRIBUTED_BUILD_SUCCESS = "distributed-build-success";
+
private List<String> selectedBuildTaskHashCodes;
private List<String> selectedCheckOutTaskHashCodes;
@@ -70,7 +80,24 @@
private Map<String, List<BuildProjectTask>> buildsInQueue = new HashMap<String, List<BuildProjectTask>>();
private Map<String, List<CheckOutTask>> checkoutsInQueue = new HashMap<String, List<CheckOutTask>>();
-
+
+ /**
+ * @plexus.requirement
+ */
+ DistributedBuildManager distributedBuildManager;
+
+ private List<DistributedBuildSummary> distributedBuildSummary;
+
+ private List<PrepareBuildProjectsTask> distributedBuildQueues;
+
+ private String buildAgentUrl;
+
+ private int projectGroupId;
+
+ private String scmRootAddress;
+
+ private List<String> selectedDistributedBuildTaskHashCodes;
+
// -----------------------------------------------------
// webwork
// -----------------------------------------------------
@@ -170,84 +197,123 @@
public String display()
throws Exception
{
- try
- {
- // current builds
- Map<String, Task> currentBuilds = getContinuum().getBuildsManager().getCurrentBuilds();
- Set<String> keySet = currentBuilds.keySet();
- for( String key : keySet )
- {
- BuildProjectTask buildTask = (BuildProjectTask) currentBuilds.get( key );
- currentBuildProjectTasks.put( key, buildTask );
+ if ( getContinuum().getConfiguration().isDistributedBuildEnabled() )
+ {
+ distributedBuildSummary = new ArrayList<DistributedBuildSummary>();
+
+ Map<String, PrepareBuildProjectsTask> map = distributedBuildManager.getDistributedBuildProjects();
+
+ for ( String url : map.keySet() )
+ {
+ PrepareBuildProjectsTask task = map.get( url );
+
+ ProjectGroup projectGroup = getContinuum().getProjectGroup( task.getProjectGroupId() );
+
+ DistributedBuildSummary summary = new DistributedBuildSummary();
+ summary.setUrl( url );
+ summary.setProjectGroupId( task.getProjectGroupId() );
+ summary.setProjectGroupName( projectGroup.getName() );
+ summary.setScmRootAddress( task.getScmRootAddress() );
+
+ ProjectScmRoot scmRoot = getContinuum().getProjectScmRootByProjectGroupAndScmRootAddress( task.getProjectGroupId(),
+ task.getScmRootAddress() );
+ if ( scmRoot.getState() == ContinuumProjectState.UPDATING )
+ {
+ summary.setCancelEnabled( false );
+ }
+ else
+ {
+ summary.setCancelEnabled( true );
+ }
+
+ distributedBuildSummary.add( summary );
+ }
+
+ distributedBuildQueues = getContinuum().getTaskQueueManager().getDistributedBuildProjectsInQueue();
+
+ return DISTRIBUTED_BUILD_SUCCESS;
+ }
+ else
+ {
+ try
+ {
+ // current builds
+ Map<String, Task> currentBuilds = getContinuum().getBuildsManager().getCurrentBuilds();
+ Set<String> keySet = currentBuilds.keySet();
+ for( String key : keySet )
+ {
+ BuildProjectTask buildTask = (BuildProjectTask) currentBuilds.get( key );
+ currentBuildProjectTasks.put( key, buildTask );
+ }
}
- }
- catch ( BuildManagerException e )
- {
- addActionError( e.getMessage() );
- return ERROR;
- }
-
- try
- {
- // queued builds
- Map<String, List<Task>> builds = getContinuum().getBuildsManager().getProjectsInBuildQueues();
- Set<String> keySet = builds.keySet();
- for( String key : keySet )
+ catch ( BuildManagerException e )
+ {
+ addActionError( e.getMessage() );
+ return ERROR;
+ }
+
+ try
{
- List<BuildProjectTask> buildTasks = new ArrayList<BuildProjectTask>();
- for( Task task : builds.get( key ) )
+ // queued builds
+ Map<String, List<Task>> builds = getContinuum().getBuildsManager().getProjectsInBuildQueues();
+ Set<String> keySet = builds.keySet();
+ for( String key : keySet )
{
- BuildProjectTask buildTask = (BuildProjectTask) task;
- buildTasks.add( buildTask );
+ List<BuildProjectTask> buildTasks = new ArrayList<BuildProjectTask>();
+ for( Task task : builds.get( key ) )
+ {
+ BuildProjectTask buildTask = (BuildProjectTask) task;
+ buildTasks.add( buildTask );
+ }
+ buildsInQueue.put( key, buildTasks );
}
- buildsInQueue.put( key, buildTasks );
}
- }
- catch ( BuildManagerException e )
- {
- addActionError( e.getMessage() );
- return ERROR;
- }
-
- try
- {
- // current checkouts
- Map<String, Task> currentCheckouts = getContinuum().getBuildsManager().getCurrentCheckouts();
- Set<String> keySet = currentCheckouts.keySet();
- for( String key : keySet )
+ catch ( BuildManagerException e )
{
- CheckOutTask checkoutTask = (CheckOutTask) currentCheckouts.get( key );
- currentCheckoutTasks.put( key, checkoutTask );
+ addActionError( e.getMessage() );
+ return ERROR;
}
- }
- catch ( BuildManagerException e )
- {
- addActionError( e.getMessage() );
- return ERROR;
- }
-
- try
- {
- // queued checkouts
- Map<String, List<Task>> checkouts = getContinuum().getBuildsManager().getProjectsInCheckoutQueues();
- Set<String> keySet = checkouts.keySet();
- for( String key : keySet )
+
+ try
{
- List<CheckOutTask> checkoutTasks = new ArrayList<CheckOutTask>();
- for( Task task : checkouts.get( key ) )
+ // current checkouts
+ Map<String, Task> currentCheckouts = getContinuum().getBuildsManager().getCurrentCheckouts();
+ Set<String> keySet = currentCheckouts.keySet();
+ for( String key : keySet )
{
- CheckOutTask checkoutTask = (CheckOutTask) task;
- checkoutTasks.add( checkoutTask );
+ CheckOutTask checkoutTask = (CheckOutTask) currentCheckouts.get( key );
+ currentCheckoutTasks.put( key, checkoutTask );
}
- checkoutsInQueue.put( key, checkoutTasks );
+ }
+ catch ( BuildManagerException e )
+ {
+ addActionError( e.getMessage() );
+ return ERROR;
+ }
+
+ try
+ {
+ // queued checkouts
+ Map<String, List<Task>> checkouts = getContinuum().getBuildsManager().getProjectsInCheckoutQueues();
+ Set<String> keySet = checkouts.keySet();
+ for( String key : keySet )
+ {
+ List<CheckOutTask> checkoutTasks = new ArrayList<CheckOutTask>();
+ for( Task task : checkouts.get( key ) )
+ {
+ CheckOutTask checkoutTask = (CheckOutTask) task;
+ checkoutTasks.add( checkoutTask );
+ }
+ checkoutsInQueue.put( key, checkoutTasks );
+ }
+ }
+ catch ( BuildManagerException e )
+ {
+ addActionError( e.getMessage() );
+ return ERROR;
}
}
- catch ( BuildManagerException e )
- {
- addActionError( e.getMessage() );
- return ERROR;
- }
-
+
return SUCCESS;
}
@@ -322,7 +388,77 @@
listToIntArray( this.getSelectedCheckOutTaskHashCodes() ) );
return SUCCESS;
}
-
+
+ public String cancelDistributedBuild()
+ throws Exception
+ {
+ try
+ {
+ checkManageQueuesAuthorization();
+ }
+ catch( AuthorizationRequiredException authzE )
+ {
+ addActionError( authzE.getMessage() );
+ return REQUIRES_AUTHORIZATION;
+ }
+ catch ( AuthenticationRequiredException e )
+ {
+ addActionError( e.getMessage() );
+ return REQUIRES_AUTHENTICATION;
+ }
+
+ distributedBuildManager.cancelDistributedBuild( buildAgentUrl, projectGroupId, scmRootAddress );
+
+ return SUCCESS;
+ }
+
+ public String removeDistributedBuildEntry()
+ throws Exception
+ {
+ try
+ {
+ checkManageQueuesAuthorization();
+ }
+ catch( AuthorizationRequiredException authzE )
+ {
+ addActionError( authzE.getMessage() );
+ return REQUIRES_AUTHORIZATION;
+ }
+ catch ( AuthenticationRequiredException e )
+ {
+ addActionError( e.getMessage() );
+ return REQUIRES_AUTHENTICATION;
+ }
+
+ getContinuum().getTaskQueueManager().removeFromDistributedBuildQueue( projectGroupId, scmRootAddress );
+
+ return SUCCESS;
+ }
+
+ public String removeDistributedBuildEntries()
+ throws Exception
+ {
+ try
+ {
+ checkManageQueuesAuthorization();
+ }
+ catch( AuthorizationRequiredException authzE )
+ {
+ addActionError( authzE.getMessage() );
+ return REQUIRES_AUTHORIZATION;
+ }
+ catch ( AuthenticationRequiredException e )
+ {
+ addActionError( e.getMessage() );
+ return REQUIRES_AUTHENTICATION;
+ }
+
+ getContinuum().getTaskQueueManager()
+ .removeTasksFromDistributedBuildQueueWithHashCodes( listToIntArray( this.getSelectedDistributedBuildTaskHashCodes() ) );
+
+ return SUCCESS;
+ }
+
private int[] listToIntArray( List<String> strings )
{
if ( strings == null || strings.isEmpty() )
@@ -485,4 +621,44 @@
{
this.checkoutsInQueue = checkoutsInQueue;
}
+
+ public List<DistributedBuildSummary> getDistributedBuildSummary()
+ {
+ return distributedBuildSummary;
+ }
+
+ public void setDistributedBuildSummary( List<DistributedBuildSummary> distributedBuildSummary )
+ {
+ this.distributedBuildSummary = distributedBuildSummary;
+ }
+
+ public String getBuildAgentUrl()
+ {
+ return buildAgentUrl;
+ }
+
+ public void setBuildAgentUrl( String buildAgentUrl )
+ {
+ this.buildAgentUrl = buildAgentUrl;
+ }
+
+ public List<PrepareBuildProjectsTask> getDistributedBuildQueues()
+ {
+ return distributedBuildQueues;
+ }
+
+ public void setDistributedBuildQueues( List<PrepareBuildProjectsTask> distributedBuildQueues )
+ {
+ this.distributedBuildQueues = distributedBuildQueues;
+ }
+
+ public List<String> getSelectedDistributedBuildTaskHashCodes()
+ {
+ return selectedDistributedBuildTaskHashCodes;
+ }
+
+ public void setSelectedDistributedBuildTaskHashCodes( List<String> selectedDistributedBuildTaskHashCodes )
+ {
+ this.selectedDistributedBuildTaskHashCodes = selectedDistributedBuildTaskHashCodes;
+ }
}
Modified: continuum/trunk/continuum-webapp/src/main/mdo/view-models.mdo
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/mdo/view-models.mdo?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/mdo/view-models.mdo (original)
+++ continuum/trunk/continuum-webapp/src/main/mdo/view-models.mdo Wed Jan 14 08:31:04 2009
@@ -494,5 +494,46 @@
</field>
</fields>
</class>
+ <class>
+ <name>DistributedBuildSummary</name>
+ <version>1.0.0+</version>
+ <fields>
+ <field>
+ <name>url</name>
+ <version>1.0.0</version>
+ <required>true</required>
+ <description>URL of the build agent</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>projectGroupId</name>
+ <version>1.0.0</version>
+ <required>true</required>
+ <description>ID of the project group</description>
+ <type>int</type>
+ </field>
+ <field>
+ <name>projectGroupName</name>
+ <version>1.0.0</version>
+ <required>true</required>
+ <description>Name of the project group</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>scmRootAddress</name>
+ <version>1.0.0</version>
+ <required>true</required>
+ <description>Scm root address of projects</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>cancelEnabled</name>
+ <version>1.0.0</version>
+ <required>true</required>
+ <description>Determines if the cancel button is enabled</description>
+ <type>boolean</type>
+ </field>
+ </fields>
+ </class>
</classes>
</model>
Modified: continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties (original)
+++ continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties Wed Jan 14 08:31:04 2009
@@ -84,6 +84,7 @@
menu.administration.queues = Queues
menu.administration.repositories = Local Repositories
menu.administration.purge = Purge Configurations
+menu.administration.buildAgents = Build Agents
# ----------------------------------------------------------------------
# Page: error
@@ -248,6 +249,7 @@
configuration.releaseOutputDirectory.message = Enter the release output directory of the Continuum web application
configuration.releaseOutputDirectory.required = You must define a release output directory
configuration.numberOfBuildsInParallel.invalid = Number of Allowed Builds in Parallel must be greater than zero
+configuration.distributedBuildEnabled.label = Enable Distributed Builds
# ----------------------------------------------------------------------
# Page: Add Project
@@ -1029,3 +1031,49 @@
parallel.build.queue.page.title= Continuum - Add/Edit Parallel Build Queue
parallel.build.queue.section.title=Continuum - Add/Edit Parallel Build Queue
parallel.build.queue.name = Name
+
+# ----------------------------------------------------------------------
+# Page: BuildAgents
+# ----------------------------------------------------------------------
+buildAgents.page.title = Continuum - Build Agents
+buildAgents.section.title = Build Agents
+buildAgents.table.url = Build Agent URL
+buildAgents.table.description = Description
+buildAgents.table.enabled = Enabled
+
+# ----------------------------------------------------------------------
+# Page: Add/Edit BuildAgent
+# ----------------------------------------------------------------------
+buildAgent.page.title = Continuum - Add/Edit Build Agent
+buildAgent.section.title = Add/Edit Build Agent
+buildAgent.url.label = Build Agent URL
+buildAgent.description.label = Description
+buildAgent.enabled.label = Enabled
+buildAgent.error.doesnotexist = Build agent does not exist
+buildAgent.error.duplicate = Build agent already exists
+
+# ----------------------------------------------------------------------
+# Page: View BuildAgent
+# ----------------------------------------------------------------------
+viewBuildAgent.page.title = Continuum - View Build Agent
+viewBuildAgent.section.title = Build Agent
+viewBuildAgent.installations.title = Available Installations
+
+# ----------------------------------------------------------------------
+# Page: Delete BuildAgent
+# ----------------------------------------------------------------------
+deleteBuildAgent.page.title = Continuum - Delete Build Agent
+deleteBuildAgent.section.title = Delete Build Agent
+deleteBuildAgent.confirmation.message = Are you sure you want to delete build agent {0} ?
+
+# ----------------------------------------------------------------------
+# Page: View Distributed Build
+# ----------------------------------------------------------------------
+distributedBuilds.page.title = Continuum - View Distributed Builds
+distributedBuilds.section.title = Distributed Builds
+distributedBuilds.buildQueue.section.title = Build Queue
+distributedBuild.table.projectGroupName = Project Group Name
+distributedBuild.table.scmRootAddress = Scm Root Address
+distributedBuild.table.agentUrl = Build Agent URL
+distributedBuilds.empty = No Distributed Builds
+distributedBuilds.removeEntries = Cancel Entries
\ No newline at end of file
Modified: continuum/trunk/continuum-webapp/src/main/resources/struts.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/resources/struts.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/resources/struts.xml (original)
+++ continuum/trunk/continuum-webapp/src/main/resources/struts.xml Wed Jan 14 08:31:04 2009
@@ -369,6 +369,10 @@
<action name="buildResult" class="buildResult">
<result name="success">/WEB-INF/jsp/buildResult.jsp</result>
+ <result name="error" type="redirect-action">
+ <param name="actionName">projectGroupSummary</param>
+ <param name="projectGroupId">${projectGroupId}</param>
+ </result>
</action>
<action name="buildOutputText" class="buildResult">
@@ -754,6 +758,7 @@
<action name="displayQueues" class="queues" method="display">
<result name="success">/WEB-INF/jsp/admin/buildQueueView.jsp</result>
+ <result name="distributed-build-success">/WEB-INF/jsp/admin/viewDistributedBuilds.jsp</result>
</action>
<action name="removeBuildQueueEntry" class="queues" method="remove">
@@ -792,6 +797,24 @@
</result>
</action>
+ <action name="cancelDistributedBuild" class="queues" method="cancelDistributedBuild">
+ <result name="success" type="redirect-action">
+ <param name="actionName">displayQueues</param>
+ </result>
+ </action>
+
+ <action name="removeDistributedBuildEntries" class="queues" method="removeDistributedBuildEntries">
+ <result name="success" type="redirect-action">
+ <param name="actionName">displayQueues</param>
+ </result>
+ </action>
+
+ <action name="removeDistributedBuildEntry" class="queues" method="removeDistributedBuildEntry">
+ <result name="success" type="redirect-action">
+ <param name="actionName">displayQueues</param>
+ </result>
+ </action>
+
<!--
* Build Queue (Parallel Builds)
-->
@@ -893,6 +916,38 @@
</result>
</action>
+ <action name="buildAgentList" class="buildAgent" method="list">
+ <result name="success">/WEB-INF/jsp/admin/buildAgentsList.jsp</result>
+ </action>
+
+ <action name="editBuildAgent" class="buildAgent" method="input">
+ <result name="input">/WEB-INF/jsp/admin/editBuildAgent.jsp</result>
+ <result name="error">/WEB-INF/jsp/admin/editBuildAgent.jsp</result>
+ </action>
+
+ <action name="saveBuildAgent" class="buildAgent" method="save">
+ <result name="input">/WEB-INF/jsp/admin/editBuildAgent.jsp</result>
+ <result name="error">/WEB-INF/jsp/admin/editBuildAgent.jsp</result>
+ <result name="success" type="redirect-action">
+ <param name="actionName">buildAgentList</param>
+ </result>
+ </action>
+
+ <action name="deleteBuildAgent" class="buildAgent" method="delete">
+ <result name="error" type="redirect-action">
+ <param name="actionName">buildAgentList</param>
+ <param name="errorMessage">${message}</param>
+ </result>
+ <result name="confirm">/WEB-INF/jsp/admin/confirmDeleteBuildAgent.jsp</result>
+ <result name="success" type="redirect-action">
+ <param name="actionName">buildAgentList</param>
+ </result>
+ </action>
+
+ <action name="viewBuildAgent" class="buildAgent" method="view">
+ <result name="success">/WEB-INF/jsp/admin/viewBuildAgent.jsp</result>
+ </action>
+
</package>
<package name="component" extends="default">
Modified: continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/applicationContext.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/applicationContext.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/applicationContext.xml (original)
+++ continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/applicationContext.xml Wed Jan 14 08:31:04 2009
@@ -65,4 +65,16 @@
<property name="session" ref="mailSession"/>
</bean>
+ <bean id="masterBuildAgentTransportServer" class="org.apache.continuum.distributed.transport.master.MasterBuildAgentTransportServer">
+ <constructor-arg ref="distributedBuildManager"/>
+ </bean>
+
+ <bean name="xmlrpcServicesList" class="java.util.ArrayList">
+ <constructor-arg>
+ <list>
+ <ref bean="masterBuildAgentTransportServer"/>
+ </list>
+ </constructor-arg>
+ </bean>
+
</beans>
Modified: continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/configuration.jsp
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/configuration.jsp?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/configuration.jsp (original)
+++ continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/configuration.jsp Wed Jan 14 08:31:04 2009
@@ -31,7 +31,7 @@
<h3>
<s:text name="configuration.section.title"/>
</h3>
-
+
<div class="axial">
<table border="1" cellspacing="2" cellpadding="3" width="100%">
<c1:data label="%{getText('configuration.workingDirectory.label')}" name="workingDirectory"/>
@@ -41,6 +41,7 @@
name="deploymentRepositoryDirectory"/>
<c1:data label="%{getText('configuration.baseUrl.label')}" name="baseUrl"/>
<c1:data label="%{getText('configuration.allowed.build.parallel')}" name="numberOfAllowedBuildsinParallel"/>
+ <c1:data label="%{getText('configuration.distributedBuildEnabled.label')}" name="distributedBuildEnabled"/>
</table>
<div class="functnbar3">
<s:form action="configuration!input.action" method="post">
Modified: continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/configurationEdit.jsp
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/configurationEdit.jsp?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/configurationEdit.jsp (original)
+++ continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/configurationEdit.jsp Wed Jan 14 08:31:04 2009
@@ -82,7 +82,7 @@
<s:text name="configuration.baseUrl.message"/>
</p></s:param>
</s:textfield>
-
+
<s:textfield label="%{getText('configuration.allowed.build.parallel')}" name="numberOfAllowedBuildsinParallel" size="10">
<s:param name="desc"><p>
<s:text name="configuration.allowed.build.paralle.message"/>
@@ -92,7 +92,9 @@
<%--
<s:checkbox label="%{getText('configuration.disable.parallel.builds')}" name="requireParallelBuilds" required="true"/>
--%>
-
+
+ <s:checkbox label="%{getText('configuration.distributedBuildEnabled.label')}" name="distributedBuildEnabled"/>
+
<s:hidden name="requireReleaseOutput"/>
</tbody>
</table>
Modified: continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/navigations/Menu.jsp
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/navigations/Menu.jsp?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/navigations/Menu.jsp (original)
+++ continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/navigations/Menu.jsp Wed Jan 14 08:31:04 2009
@@ -166,6 +166,16 @@
</s:a>
</div>
</redback:ifAuthorized>
+ <redback:ifAuthorized permission="continuum-manage-distributed-builds">
+ <s:url id="buildAgentList" action="buildAgentList" namespace="/security" includeParams="none"/>
+ <div class="body">
+ <s:a href="%{buildAgentList}">
+ <s:text name="menu.administration.buildAgents"/>
+ </s:a>
+ </div>
+ </redback:ifAuthorized>
+ <redback:ifAuthorized permission="continuum-manage-distributed-builds">
+ </redback:ifAuthorized>
<redback:ifAuthorized permission="continuum-manage-users">
<s:url id="userListUrl" action="userlist" namespace="/security" includeParams="none"/>
<div class="body">
Modified: continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/web.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/web.xml (original)
+++ continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/web.xml Wed Jan 14 08:31:04 2009
@@ -91,11 +91,32 @@
<servlet-class>org.apache.maven.continuum.xmlrpc.server.ContinuumXmlRpcServlet</servlet-class>
</servlet>
+ <servlet>
+ <servlet-name>MasterXmlRpcServlet</servlet-name>
+ <servlet-class>
+ com.atlassian.xmlrpc.spring.BinderSpringXmlRpcServlet
+ </servlet-class>
+ <init-param>
+ <param-name>serviceListBeanName</param-name>
+ <param-value>xmlrpcServicesList</param-value>
+ </init-param>
+ <init-param>
+ <param-name>enabledForExtensions</param-name>
+ <param-value>true</param-value>
+ </init-param>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
<servlet-mapping>
<servlet-name>XmlRpcServlet</servlet-name>
<url-pattern>/xmlrpc</url-pattern>
</servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>MasterXmlRpcServlet</servlet-name>
+ <url-pattern>/master-xmlrpc</url-pattern>
+ </servlet-mapping>
+
<error-page>
<error-code>403</error-code>
<location>/WEB-INF/jsp/error/httpError.jsp?errorCode=403</location>
Modified: continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-api/pom.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-api/pom.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-api/pom.xml (original)
+++ continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-api/pom.xml Wed Jan 14 08:31:04 2009
@@ -31,7 +31,7 @@
<dependency>
<groupId>org.apache.xmlrpc</groupId>
<artifactId>xmlrpc-common</artifactId>
- <version>3.0</version>
+ <version>3.1</version>
</dependency>
</dependencies>
Modified: continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-client/pom.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-client/pom.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-client/pom.xml (original)
+++ continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-client/pom.xml Wed Jan 14 08:31:04 2009
@@ -36,7 +36,7 @@
<dependency>
<groupId>org.apache.xmlrpc</groupId>
<artifactId>xmlrpc-client</artifactId>
- <version>3.0</version>
+ <version>3.1</version>
</dependency>
</dependencies>
<build>
Modified: continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/pom.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/pom.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/pom.xml (original)
+++ continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/pom.xml Wed Jan 14 08:31:04 2009
@@ -56,7 +56,7 @@
<dependency>
<groupId>org.apache.xmlrpc</groupId>
<artifactId>xmlrpc-server</artifactId>
- <version>3.0</version>
+ <version>3.1</version>
</dependency>
<dependency>
<groupId>net.sf.dozer</groupId>
Modified: continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/main/java/org/apache/maven/continuum/xmlrpc/server/ContinuumServiceImpl.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/main/java/org/apache/maven/continuum/xmlrpc/server/ContinuumServiceImpl.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/main/java/org/apache/maven/continuum/xmlrpc/server/ContinuumServiceImpl.java (original)
+++ continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/main/java/org/apache/maven/continuum/xmlrpc/server/ContinuumServiceImpl.java Wed Jan 14 08:31:04 2009
@@ -1063,15 +1063,15 @@
{
Map<String, List<Task>> buildTasks = parallelBuildsManager.getProjectsInBuildQueues();
Set<String> keys = buildTasks.keySet();
- List<org.apache.maven.continuum.buildqueue.BuildProjectTask> convertedTasks =
- new ArrayList<org.apache.maven.continuum.buildqueue.BuildProjectTask>();
+ List<org.apache.continuum.taskqueue.BuildProjectTask> convertedTasks =
+ new ArrayList<org.apache.continuum.taskqueue.BuildProjectTask>();
for( String key : keys )
{
List<Task> tasks = buildTasks.get( key );
for( Task task : tasks )
{
- convertedTasks.add( ( org.apache.maven.continuum.buildqueue.BuildProjectTask ) task );
+ convertedTasks.add( ( org.apache.continuum.taskqueue.BuildProjectTask ) task );
}
}
@@ -1469,10 +1469,10 @@
// ----------------------------------------------------------------------
private List<BuildProjectTask> populateBuildProjectTaskList(
- List<org.apache.maven.continuum.buildqueue.BuildProjectTask> buildProjectTasks )
+ List<org.apache.continuum.taskqueue.BuildProjectTask> buildProjectTasks )
{
List<BuildProjectTask> responses = new ArrayList<BuildProjectTask>();
- for ( org.apache.maven.continuum.buildqueue.BuildProjectTask buildProjectTask : buildProjectTasks )
+ for ( org.apache.continuum.taskqueue.BuildProjectTask buildProjectTask : buildProjectTasks )
{
responses.add( (BuildProjectTask) mapper.map( buildProjectTask, BuildProjectTask.class ) );
Modified: continuum/trunk/pom.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/pom.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/pom.xml (original)
+++ continuum/trunk/pom.xml Wed Jan 14 08:31:04 2009
@@ -1,4 +1,4 @@
-<?xml version='1.0' encoding='UTF-8'?>
+<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
@@ -16,8 +16,7 @@
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.continuum</groupId>
@@ -220,6 +219,8 @@
<module>continuum-docs</module>
<module>continuum-jetty</module>
<module>continuum-purge</module>
+ <module>continuum-distributed-build</module>
+ <module>continuum-builder</module>
</modules>
<!-- TODO: confirm whether these are needed -->
<repositories>
@@ -584,6 +585,57 @@
<version>${pom.version}</version>
</dependency>
<dependency>
+ <groupId>org.apache.continuum</groupId>
+ <artifactId>continuum-builder</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.continuum</groupId>
+ <artifactId>continuum-buildagent-api</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.continuum</groupId>
+ <artifactId>continuum-buildagent-core</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.continuum</groupId>
+ <artifactId>continuum-buildagent-webapp</artifactId>
+ <version>${pom.version}</version>
+ <type>war</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.continuum</groupId>
+ <artifactId>continuum-distributed-build-transport-slave-api</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.continuum</groupId>
+ <artifactId>continuum-distributed-build-transport-slave-server</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.continuum</groupId>
+ <artifactId>continuum-distributed-build-transport-slave-client</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.continuum</groupId>
+ <artifactId>continuum-distributed-build-transport-master-api</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.continuum</groupId>
+ <artifactId>continuum-distributed-build-transport-master-server</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.continuum</groupId>
+ <artifactId>continuum-distributed-build-transport-master-client</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ <dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>1.5.0</version>
Propchange: continuum/trunk/src/site/
------------------------------------------------------------------------------
svn:mergeinfo =
Propchange: continuum/trunk/src/site/apt/
------------------------------------------------------------------------------
svn:mergeinfo =