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/03/09 14:42:43 UTC
svn commit: r751678 - in /continuum/trunk:
continuum-api/src/main/java/org/apache/continuum/release/distributed/manager/
continuum-buildagent/continuum-buildagent-api/src/main/java/org/apache/continuum/buildagent/
continuum-buildagent/continuum-buildag...
Author: ctan
Date: Mon Mar 9 13:42:42 2009
New Revision: 751678
URL: http://svn.apache.org/viewvc?rev=751678&view=rev
Log:
[CONTINUUM-2043] added releases list page and release rollback from build agent
Added:
continuum/trunk/continuum-webapp/src/main/java/org/apache/continuum/web/action/DistributedReleasesAction.java (with props)
continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/releases.jsp (with props)
Modified:
continuum/trunk/continuum-api/src/main/java/org/apache/continuum/release/distributed/manager/DistributedReleaseManager.java
continuum/trunk/continuum-buildagent/continuum-buildagent-api/src/main/java/org/apache/continuum/buildagent/ContinuumBuildAgentService.java
continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/ContinuumBuildAgentServiceImpl.java
continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/BuildAgentReleaseManager.java
continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/DefaultBuildAgentReleaseManager.java
continuum/trunk/continuum-core/src/main/java/org/apache/continuum/release/distributed/DistributedReleaseUtil.java
continuum/trunk/continuum-core/src/main/java/org/apache/continuum/release/distributed/manager/DefaultDistributedReleaseManager.java
continuum/trunk/continuum-distributed/continuum-distributed-slave/continuum-distributed-slave-api/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportService.java
continuum/trunk/continuum-distributed/continuum-distributed-slave/continuum-distributed-slave-client/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportClient.java
continuum/trunk/continuum-distributed/continuum-distributed-slave/continuum-distributed-slave-server/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportServer.java
continuum/trunk/continuum-release/src/main/mdo/prepared-releases.mdo
continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePerformAction.java
continuum/trunk/continuum-webapp/src/main/mdo/view-models.mdo
continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties
continuum/trunk/continuum-webapp/src/main/resources/struts.xml
continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/navigations/Menu.jsp
Modified: continuum/trunk/continuum-api/src/main/java/org/apache/continuum/release/distributed/manager/DistributedReleaseManager.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-api/src/main/java/org/apache/continuum/release/distributed/manager/DistributedReleaseManager.java?rev=751678&r1=751677&r2=751678&view=diff
==============================================================================
--- continuum/trunk/continuum-api/src/main/java/org/apache/continuum/release/distributed/manager/DistributedReleaseManager.java (original)
+++ continuum/trunk/continuum-api/src/main/java/org/apache/continuum/release/distributed/manager/DistributedReleaseManager.java Mon Mar 9 13:42:42 2009
@@ -52,7 +52,7 @@
String getPreparedReleaseName( String releaseId )
throws ContinuumReleaseException;
- void releasePerform( String releaseId, String goals, String arguments, boolean useReleaseProfile, LocalRepository repository )
+ void releasePerform( int projectId, String releaseId, String goals, String arguments, boolean useReleaseProfile, LocalRepository repository )
throws ContinuumReleaseException;
void releasePerformFromScm( int projectId, String goals, String arguments, boolean useReleaseProfile, LocalRepository repository,
@@ -64,4 +64,7 @@
String releaseCleanup( String releaseId )
throws ContinuumReleaseException;
+
+ List<Map> getAllReleasesInProgress()
+ throws ContinuumReleaseException;
}
\ No newline at end of file
Modified: continuum/trunk/continuum-buildagent/continuum-buildagent-api/src/main/java/org/apache/continuum/buildagent/ContinuumBuildAgentService.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-buildagent/continuum-buildagent-api/src/main/java/org/apache/continuum/buildagent/ContinuumBuildAgentService.java?rev=751678&r1=751677&r2=751678&view=diff
==============================================================================
--- continuum/trunk/continuum-buildagent/continuum-buildagent-api/src/main/java/org/apache/continuum/buildagent/ContinuumBuildAgentService.java (original)
+++ continuum/trunk/continuum-buildagent/continuum-buildagent-api/src/main/java/org/apache/continuum/buildagent/ContinuumBuildAgentService.java Mon Mar 9 13:42:42 2009
@@ -69,10 +69,13 @@
void releasePerform( String releaseId, String goals, String arguments, boolean useReleaseProfile, Map repository )
throws ContinuumBuildAgentException;
- void releasePerformFromScm( String goals, String arguments, boolean useReleaseProfile, Map repository, String scmUrl, String scmUsername,
- String scmPassword, String scmTag, String scmTagBase, Map<String, String> environments )
+ String releasePerformFromScm( String goals, String arguments, boolean useReleaseProfile, Map repository, String scmUrl, String scmUsername,
+ String scmPassword, String scmTag, String scmTagBase, Map<String, String> environments )
throws ContinuumBuildAgentException;
String releaseCleanup( String releaseId )
throws ContinuumBuildAgentException;
+
+ void releaseRollback( String releaseId, int projectId )
+ throws ContinuumBuildAgentException;
}
Modified: continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/ContinuumBuildAgentServiceImpl.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/ContinuumBuildAgentServiceImpl.java?rev=751678&r1=751677&r2=751678&view=diff
==============================================================================
--- continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/ContinuumBuildAgentServiceImpl.java (original)
+++ continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/ContinuumBuildAgentServiceImpl.java Mon Mar 9 13:42:42 2009
@@ -522,15 +522,15 @@
}
}
- public void releasePerformFromScm( String goals, String arguments, boolean useReleaseProfile, Map repository, String scmUrl,
- String scmUsername, String scmPassword, String scmTag, String scmTagBase,
- Map<String, String> environments )
+ public String releasePerformFromScm( String goals, String arguments, boolean useReleaseProfile, Map repository, String scmUrl,
+ String scmUsername, String scmPassword, String scmTag, String scmTagBase,
+ Map<String, String> environments )
throws ContinuumBuildAgentException
{
try
{
- buildAgentReleaseManager.releasePerformFromScm( goals, arguments, useReleaseProfile, repository, scmUrl, scmUsername,
- scmPassword, scmTag, scmTagBase, environments );
+ return buildAgentReleaseManager.releasePerformFromScm( goals, arguments, useReleaseProfile, repository, scmUrl,
+ scmUsername, scmPassword, scmTag, scmTagBase, environments );
}
catch ( ContinuumReleaseException e )
{
@@ -544,6 +544,19 @@
return buildAgentReleaseManager.releaseCleanup( releaseId );
}
+ public void releaseRollback( String releaseId, int projectId )
+ throws ContinuumBuildAgentException
+ {
+ try
+ {
+ buildAgentReleaseManager.releaseRollback( releaseId, projectId );
+ }
+ catch ( ContinuumReleaseException e )
+ {
+ throw new ContinuumBuildAgentException( "Unable to rollback release " + releaseId, e );
+ }
+ }
+
private void processProject( String workingDirectory, String pomFilename, boolean autoVersionSubmodules, List<Map<String, String>> projects )
throws Exception
{
Modified: continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/BuildAgentReleaseManager.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/BuildAgentReleaseManager.java?rev=751678&r1=751677&r2=751678&view=diff
==============================================================================
--- continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/BuildAgentReleaseManager.java (original)
+++ continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/BuildAgentReleaseManager.java Mon Mar 9 13:42:42 2009
@@ -42,9 +42,12 @@
void releasePerform( String releaseId, String goals, String arguments, boolean useReleaseProfile, Map repository )
throws ContinuumReleaseException;
- void releasePerformFromScm( String goals, String arguments, boolean useReleaseProfile, Map repository, String scmUrl, String scmUsername,
+ String releasePerformFromScm( String goals, String arguments, boolean useReleaseProfile, Map repository, String scmUrl, String scmUsername,
String scmPassword, String scmTag, String scmTagBase, Map<String, String> environments )
throws ContinuumReleaseException;
String releaseCleanup( String releaseId );
+
+ void releaseRollback( String releaseId, int projectId )
+ throws ContinuumReleaseException;
}
Modified: continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/DefaultBuildAgentReleaseManager.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/DefaultBuildAgentReleaseManager.java?rev=751678&r1=751677&r2=751678&view=diff
==============================================================================
--- continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/DefaultBuildAgentReleaseManager.java (original)
+++ continuum/trunk/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/DefaultBuildAgentReleaseManager.java Mon Mar 9 13:42:42 2009
@@ -173,8 +173,8 @@
releaseManager.perform( releaseId, performDirectory, goals, arguments, useReleaseProfile, listener, repo );
}
- public void releasePerformFromScm( String goals, String arguments, boolean useReleaseProfile, Map repository, String scmUrl, String scmUsername,
- String scmPassword, String scmTag, String scmTagBase, Map<String, String> environments )
+ public String releasePerformFromScm( String goals, String arguments, boolean useReleaseProfile, Map repository, String scmUrl,
+ String scmUsername, String scmPassword, String scmTag, String scmTagBase, Map<String, String> environments )
throws ContinuumReleaseException
{
ContinuumReleaseDescriptor descriptor = new ContinuumReleaseDescriptor();
@@ -196,6 +196,8 @@
releaseManager.getPreparedReleases().put( releaseId, descriptor );
releasePerform( releaseId, goals, arguments, useReleaseProfile, repository );
+
+ return releaseId;
}
public String releaseCleanup( String releaseId )
@@ -215,6 +217,29 @@
}
}
+ public void releaseRollback( String releaseId, int projectId )
+ throws ContinuumReleaseException
+ {
+ ContinuumReleaseManagerListener listener = new DefaultReleaseManagerListener();
+
+ releaseManager.rollback( releaseId, buildAgentConfigurationService.getWorkingDirectory( projectId ).getPath(), listener );
+
+ //recurse until rollback is finished
+ while ( listener.getState() != ContinuumReleaseManagerListener.FINISHED )
+ {
+ try
+ {
+ Thread.sleep( 1000 );
+ }
+ catch ( InterruptedException e )
+ {
+ //do nothing
+ }
+ }
+
+ releaseManager.getPreparedReleases().remove( releaseId );
+ }
+
private Project getProject( Map context )
{
Project project = new Project();
Modified: continuum/trunk/continuum-core/src/main/java/org/apache/continuum/release/distributed/DistributedReleaseUtil.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/continuum/release/distributed/DistributedReleaseUtil.java?rev=751678&r1=751677&r2=751678&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/continuum/release/distributed/DistributedReleaseUtil.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/continuum/release/distributed/DistributedReleaseUtil.java Mon Mar 9 13:42:42 2009
@@ -95,6 +95,10 @@
public static final String KEY_LOCAL_REPOSITORY_LAYOUT = "repo-layout";
+ public static final String KEY_RELEASE_GOAL = "release-goal";
+
+ public static final String KEY_BUILD_AGENT_URL = "build-agent-url";
+
public static String getScmTag( Map context, String defaultValue )
{
return getString( context, KEY_SCM_TAG, defaultValue );
@@ -185,6 +189,26 @@
return getString( context, KEY_GOALS, defaultValue );
}
+ public static String getReleaseId( Map context )
+ {
+ return getString( context, KEY_RELEASE_ID );
+ }
+
+ public static String getReleaseGoal( Map context )
+ {
+ return getString( context, KEY_RELEASE_GOAL );
+ }
+
+ public static String getBuildAgentUrl( Map context )
+ {
+ return getString( context, KEY_BUILD_AGENT_URL );
+ }
+
+ public static int getProjectId( Map context )
+ {
+ return getInteger( context, KEY_PROJECT_ID );
+ }
+
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
Modified: continuum/trunk/continuum-core/src/main/java/org/apache/continuum/release/distributed/manager/DefaultDistributedReleaseManager.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/continuum/release/distributed/manager/DefaultDistributedReleaseManager.java?rev=751678&r1=751677&r2=751678&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/continuum/release/distributed/manager/DefaultDistributedReleaseManager.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/continuum/release/distributed/manager/DefaultDistributedReleaseManager.java Mon Mar 9 13:42:42 2009
@@ -69,7 +69,9 @@
* @plexus.requirement
*/
InstallationService installationService;
-
+
+ private Map<String, Map> releasesInProgress;
+
public Map getReleasePluginParameters( int projectId, String pomFilename )
throws ContinuumReleaseException
{
@@ -137,7 +139,9 @@
String releaseId = client.releasePrepare( createProjectMap( project ), createPropertiesMap( releaseProperties ),
releaseVersion, developmentVersion, environments );
- addReleasePrepare( releaseId, buildAgentUrl );
+ addReleasePrepare( releaseId, buildAgentUrl, releaseVersion.get( releaseId ) );
+
+ addReleaseInProgress( releaseId, "prepare", project.getId() );
return releaseId;
}
@@ -270,7 +274,8 @@
}
}
- public void releasePerform( String releaseId, String goals, String arguments, boolean useReleaseProfile, LocalRepository repository )
+ public void releasePerform( int projectId, String releaseId, String goals, String arguments, boolean useReleaseProfile,
+ LocalRepository repository )
throws ContinuumReleaseException
{
String buildAgentUrl = getBuildAgentUrl( releaseId );
@@ -304,6 +309,8 @@
{
SlaveBuildAgentTransportClient client = new SlaveBuildAgentTransportClient( new URL( buildAgentUrl ) );
client.releasePerform( releaseId, goals, arguments, useReleaseProfile, map );
+
+ addReleaseInProgress( releaseId, "perform", projectId );
}
catch ( MalformedURLException e )
{
@@ -353,8 +360,10 @@
try
{
SlaveBuildAgentTransportClient client = new SlaveBuildAgentTransportClient( new URL( buildAgentUrl ) );
- client.releasePerformFromScm( goals, arguments, useReleaseProfile, map, scmUrl, scmUsername, scmPassword,
- scmTag, scmTagBase, environments );
+ String releaseId = client.releasePerformFromScm( goals, arguments, useReleaseProfile, map, scmUrl, scmUsername, scmPassword,
+ scmTag, scmTagBase, environments );
+
+ addReleaseInProgress( releaseId, "perform", projectId );
}
catch ( MalformedURLException e )
{
@@ -371,7 +380,29 @@
public void releaseRollback( String releaseId, int projectId )
throws ContinuumReleaseException
{
- //TODO
+ String buildAgentUrl = getBuildAgentUrl( releaseId );
+
+ if ( StringUtils.isBlank( buildAgentUrl ) )
+ {
+ log.info( "Unable to rollback release " + releaseId + " because no build agent found" );
+ return;
+ }
+
+ try
+ {
+ SlaveBuildAgentTransportClient client = new SlaveBuildAgentTransportClient( new URL( buildAgentUrl ) );
+ client.releaseRollback( releaseId, projectId );
+ }
+ catch ( MalformedURLException e )
+ {
+ log.error( "Invalid build agent url " + buildAgentUrl );
+ throw new ContinuumReleaseException( "Invalid build agent url " + buildAgentUrl );
+ }
+ catch ( Exception e )
+ {
+ log.error( "Unable to rollback release " + releaseId, e );
+ throw new ContinuumReleaseException( "Unable to rollback release " + releaseId, e );
+ }
}
public String releaseCleanup( String releaseId )
@@ -388,7 +419,10 @@
try
{
SlaveBuildAgentTransportClient client = new SlaveBuildAgentTransportClient( new URL( buildAgentUrl ) );
- return client.releaseCleanup( releaseId );
+ String result = client.releaseCleanup( releaseId );
+
+ removeFromReleaseInProgress( releaseId );
+ return result;
}
catch ( MalformedURLException e )
{
@@ -402,6 +436,55 @@
}
}
+ public List<Map> getAllReleasesInProgress()
+ throws ContinuumReleaseException
+ {
+ List<Map> releases = new ArrayList<Map>();
+ Map<String, Map> releasesMap = new HashMap<String, Map>();
+
+ if ( releasesInProgress != null && !releasesInProgress.isEmpty() )
+ {
+ for ( String releaseId : releasesInProgress.keySet() )
+ {
+ String buildAgentUrl = getBuildAgentUrl( releaseId );
+
+ if ( StringUtils.isNotBlank( buildAgentUrl ) )
+ {
+ try
+ {
+ SlaveBuildAgentTransportClient client = new SlaveBuildAgentTransportClient( new URL( buildAgentUrl ) );
+ Map map = client.getListener( releaseId );
+
+ if ( map != null && !map.isEmpty() )
+ {
+ Map release = releasesInProgress.get( releaseId );
+ release.put( DistributedReleaseUtil.KEY_RELEASE_ID, releaseId );
+ release.put( DistributedReleaseUtil.KEY_BUILD_AGENT_URL, buildAgentUrl );
+
+ releases.add( release );
+
+ releasesMap.put( releaseId, releasesInProgress.get( releaseId ) );
+ }
+ }
+ catch ( MalformedURLException e )
+ {
+ log.error( "Invalid build agent url " + buildAgentUrl );
+ throw new ContinuumReleaseException( "Invalid build agent url " + buildAgentUrl );
+ }
+ catch ( Exception e )
+ {
+ log.error( "Failed to get all releases in progress ", e );
+ throw new ContinuumReleaseException( "Failed to get all releases in progress ", e );
+ }
+ }
+ }
+
+ releasesInProgress = releasesMap;
+ }
+
+ return releases;
+ }
+
private Map createProjectMap( Project project )
{
Map map = new HashMap();
@@ -514,7 +597,7 @@
return null;
}
- private void addReleasePrepare( String releaseId, String buildAgentUrl )
+ private void addReleasePrepare( String releaseId, String buildAgentUrl, String releaseName )
throws ContinuumReleaseException
{
File file = getPreparedReleasesFile();
@@ -527,6 +610,7 @@
PreparedRelease release = new PreparedRelease();
release.setReleaseId( releaseId );
release.setBuildAgentUrl( buildAgentUrl );
+ release.setReleaseName( releaseName );
List<PreparedRelease> preparedReleases = getPreparedReleases();
@@ -540,7 +624,8 @@
for ( PreparedRelease preparedRelease : preparedReleases )
{
- if ( preparedRelease.getReleaseId().equals( release.getReleaseId() ) )
+ if ( preparedRelease.getReleaseId().equals( release.getReleaseId() ) &&
+ preparedRelease.getReleaseName().equals( release.getReleaseName() ) )
{
preparedRelease.setBuildAgentUrl( release.getBuildAgentUrl() );
found = true;
@@ -568,22 +653,41 @@
}
}
- private void removePrepareRelease( String releaseId )
- throws ContinuumReleaseException
+ private void addReleaseInProgress( String releaseId, String releaseType, int projectId )
{
- List<PreparedRelease> preparedReleases = getPreparedReleases();
+ if ( releasesInProgress == null )
+ {
+ releasesInProgress = new HashMap<String, Map>();
+ }
+
+ Map map = new HashMap();
+ map.put( DistributedReleaseUtil.KEY_RELEASE_GOAL, releaseType );
+ map.put( DistributedReleaseUtil.KEY_PROJECT_ID, projectId );
+
+ releasesInProgress.put( releaseId, map );
+ }
+
+ private void removeFromReleaseInProgress( String releaseId )
+ {
+ if ( releasesInProgress != null && releasesInProgress.containsKey( releaseId ) )
+ {
+ releasesInProgress.remove( releaseId );
+ }
}
private String getBuildAgentUrl( String releaseId )
throws ContinuumReleaseException
{
List<PreparedRelease> preparedReleases = getPreparedReleases();
-
- for ( PreparedRelease preparedRelease : preparedReleases )
+
+ if ( preparedReleases != null )
{
- if ( preparedRelease.getReleaseId().equals( releaseId ) )
+ for ( PreparedRelease preparedRelease : preparedReleases )
{
- return preparedRelease.getBuildAgentUrl();
+ if ( preparedRelease.getReleaseId().equals( releaseId ) )
+ {
+ return preparedRelease.getBuildAgentUrl();
+ }
}
}
Modified: continuum/trunk/continuum-distributed/continuum-distributed-slave/continuum-distributed-slave-api/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportService.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-distributed/continuum-distributed-slave/continuum-distributed-slave-api/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportService.java?rev=751678&r1=751677&r2=751678&view=diff
==============================================================================
--- continuum/trunk/continuum-distributed/continuum-distributed-slave/continuum-distributed-slave-api/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportService.java (original)
+++ continuum/trunk/continuum-distributed/continuum-distributed-slave/continuum-distributed-slave-api/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportService.java Mon Mar 9 13:42:42 2009
@@ -72,10 +72,13 @@
public Boolean releasePerform( String releaseId, String goals, String arguments, boolean useReleaseProfile, Map repository )
throws Exception;
- public Boolean releasePerformFromScm( String goals, String arguments, boolean useReleaseProfile, Map repository, String scmUrl,
- String scmUsername, String scmPassword, String scmTag, String scmTagBase, Map environments )
+ public String releasePerformFromScm( String goals, String arguments, boolean useReleaseProfile, Map repository, String scmUrl,
+ String scmUsername, String scmPassword, String scmTag, String scmTagBase, Map environments )
throws Exception;
public String releaseCleanup( String releaseId )
throws Exception;
+
+ public Boolean releaseRollback( String releaseId, int projectId )
+ throws Exception;
}
Modified: continuum/trunk/continuum-distributed/continuum-distributed-slave/continuum-distributed-slave-client/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportClient.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-distributed/continuum-distributed-slave/continuum-distributed-slave-client/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportClient.java?rev=751678&r1=751677&r2=751678&view=diff
==============================================================================
--- continuum/trunk/continuum-distributed/continuum-distributed-slave/continuum-distributed-slave-client/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportClient.java (original)
+++ continuum/trunk/continuum-distributed/continuum-distributed-slave/continuum-distributed-slave-client/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportClient.java Mon Mar 9 13:42:42 2009
@@ -370,17 +370,16 @@
return result;
}
- public Boolean releasePerformFromScm( String goals, String arguments, boolean useReleaseProfile, Map repository, String scmUrl,
+ public String releasePerformFromScm( String goals, String arguments, boolean useReleaseProfile, Map repository, String scmUrl,
String scmUsername, String scmPassword, String scmTag, String scmTagBase, Map environments )
throws Exception
{
- Boolean result = null;
+ String result = null;
try
{
- slave.releasePerformFromScm( goals, arguments, useReleaseProfile, repository, scmUrl, scmUsername, scmPassword, scmTag,
+ result = slave.releasePerformFromScm( goals, arguments, useReleaseProfile, repository, scmUrl, scmUsername, scmPassword, scmTag,
scmTagBase, environments);
- result = Boolean.FALSE;
log.info( "Performing release" );
}
catch ( Exception e )
@@ -410,4 +409,24 @@
return result;
}
+
+ public Boolean releaseRollback( String releaseId, int projectId )
+ throws Exception
+ {
+ Boolean result = Boolean.FALSE;
+
+ try
+ {
+ slave.releaseRollback( releaseId, projectId );
+ result = Boolean.TRUE;
+ log.info( "Rollback release " + releaseId );
+ }
+ catch ( Exception e )
+ {
+ log.error( "Failed to rollback release " + releaseId );
+ throw new Exception( "Failed to rollback release " + releaseId );
+ }
+
+ return result;
+ }
}
Modified: continuum/trunk/continuum-distributed/continuum-distributed-slave/continuum-distributed-slave-server/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportServer.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-distributed/continuum-distributed-slave/continuum-distributed-slave-server/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportServer.java?rev=751678&r1=751677&r2=751678&view=diff
==============================================================================
--- continuum/trunk/continuum-distributed/continuum-distributed-slave/continuum-distributed-slave-server/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportServer.java (original)
+++ continuum/trunk/continuum-distributed/continuum-distributed-slave/continuum-distributed-slave-server/src/main/java/org/apache/continuum/distributed/transport/slave/SlaveBuildAgentTransportServer.java Mon Mar 9 13:42:42 2009
@@ -290,25 +290,20 @@
return result;
}
- public Boolean releasePerformFromScm( String goals, String arguments, boolean useReleaseProfile, Map repository, String scmUrl,
- String scmUsername, String scmPassword, String scmTag, String scmTagBase, Map environments )
+ public String releasePerformFromScm( String goals, String arguments, boolean useReleaseProfile, Map repository, String scmUrl,
+ String scmUsername, String scmPassword, String scmTag, String scmTagBase, Map environments )
throws Exception
{
- Boolean result = Boolean.FALSE;
-
try
{
- continuumBuildAgentService.releasePerformFromScm( goals, arguments, useReleaseProfile, repository, scmUrl, scmUsername,
- scmPassword, scmTag, scmTagBase, environments );
- result = Boolean.TRUE;
+ return continuumBuildAgentService.releasePerformFromScm( goals, arguments, useReleaseProfile, repository, scmUrl, scmUsername,
+ scmPassword, scmTag, scmTagBase, environments );
}
catch ( ContinuumBuildAgentException e )
{
log.error( "Unable to perform release", e );
throw e;
}
-
- return result;
}
public String releaseCleanup( String releaseId )
@@ -324,4 +319,23 @@
throw e;
}
}
+
+ public Boolean releaseRollback( String releaseId, int projectId )
+ throws Exception
+ {
+ Boolean result = Boolean.FALSE;
+
+ try
+ {
+ continuumBuildAgentService.releaseRollback( releaseId, projectId );
+ result = Boolean.TRUE;
+ }
+ catch ( ContinuumBuildAgentException e )
+ {
+ log.error( "Failed to rollback release " + releaseId, e );
+ throw e;
+ }
+
+ return result;
+ }
}
Modified: continuum/trunk/continuum-release/src/main/mdo/prepared-releases.mdo
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-release/src/main/mdo/prepared-releases.mdo?rev=751678&r1=751677&r2=751678&view=diff
==============================================================================
--- continuum/trunk/continuum-release/src/main/mdo/prepared-releases.mdo (original)
+++ continuum/trunk/continuum-release/src/main/mdo/prepared-releases.mdo Mon Mar 9 13:42:42 2009
@@ -51,7 +51,14 @@
<name>releaseId</name>
<version>1.0.0</version>
<required>true</required>
- <description>release</description>
+ <description>release id</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>releaseName</name>
+ <version>1.0.0</version>
+ <required>true</required>
+ <description>prepared release name</description>
<type>String</type>
</field>
<field>
Added: continuum/trunk/continuum-webapp/src/main/java/org/apache/continuum/web/action/DistributedReleasesAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/continuum/web/action/DistributedReleasesAction.java?rev=751678&view=auto
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/continuum/web/action/DistributedReleasesAction.java (added)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/continuum/web/action/DistributedReleasesAction.java Mon Mar 9 13:42:42 2009
@@ -0,0 +1,51 @@
+package org.apache.continuum.web.action;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.continuum.release.distributed.DistributedReleaseUtil;
+import org.apache.continuum.release.distributed.manager.DistributedReleaseManager;
+import org.apache.maven.continuum.web.action.ContinuumActionSupport;
+import org.apache.maven.continuum.web.model.DistributedReleaseSummary;
+/**
+ * @plexus.component role="com.opensymphony.xwork2.Action" role-hint="distributedRelease"
+ */
+public class DistributedReleasesAction
+ extends ContinuumActionSupport
+{
+ private List<DistributedReleaseSummary> releasesSummary;
+
+ public String list()
+ throws Exception
+ {
+ DistributedReleaseManager releaseManager = getContinuum().getDistributedReleaseManager();
+
+ List<Map> releases = releaseManager.getAllReleasesInProgress();
+
+ releasesSummary = new ArrayList<DistributedReleaseSummary>();
+
+ for ( Map release : releases )
+ {
+ DistributedReleaseSummary summary = new DistributedReleaseSummary();
+ summary.setReleaseId( DistributedReleaseUtil.getReleaseId( release ) );
+ summary.setReleaseGoal( DistributedReleaseUtil.getReleaseGoal( release ) );
+ summary.setBuildAgentUrl( DistributedReleaseUtil.getBuildAgentUrl( release ) );
+ summary.setProjectId( DistributedReleaseUtil.getProjectId( release ) );
+
+ releasesSummary.add( summary );
+ }
+
+ return SUCCESS;
+ }
+
+ public List<DistributedReleaseSummary> getReleasesSummary()
+ {
+ return releasesSummary;
+ }
+
+ public void setReleasesSummary( List<DistributedReleaseSummary> releasesSummary )
+ {
+ this.releasesSummary = releasesSummary;
+ }
+}
Propchange: continuum/trunk/continuum-webapp/src/main/java/org/apache/continuum/web/action/DistributedReleasesAction.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: continuum/trunk/continuum-webapp/src/main/java/org/apache/continuum/web/action/DistributedReleasesAction.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePerformAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePerformAction.java?rev=751678&r1=751677&r2=751678&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePerformAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ReleasePerformAction.java Mon Mar 9 13:42:42 2009
@@ -208,7 +208,7 @@
{
DistributedReleaseManager releaseManager = getContinuum().getDistributedReleaseManager();
- releaseManager.releasePerform( releaseId, goals, arguments, useReleaseProfile, repository );
+ releaseManager.releasePerform( projectId, releaseId, goals, arguments, useReleaseProfile, repository );
}
else
{
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=751678&r1=751677&r2=751678&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/mdo/view-models.mdo (original)
+++ continuum/trunk/continuum-webapp/src/main/mdo/view-models.mdo Mon Mar 9 13:42:42 2009
@@ -571,5 +571,35 @@
</field>
</fields>
</class>
+ <class>
+ <name>DistributedReleaseSummary</name>
+ <version>1.0.0+</version>
+ <fields>
+ <field>
+ <name>releaseId</name>
+ <version>1.0.0</version>
+ <required>true</required>
+ <type>String</type>
+ </field>
+ <field>
+ <name>releaseGoal</name>
+ <version>1.0.0</version>
+ <required>true</required>
+ <type>String</type>
+ </field>
+ <field>
+ <name>buildAgentUrl</name>
+ <version>1.0.0</version>
+ <required>true</required>
+ <type>String</type>
+ </field>
+ <field>
+ <name>projectId</name>
+ <version>1.0.0</version>
+ <required>true</required>
+ <type>int</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=751678&r1=751677&r2=751678&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties (original)
+++ continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties Mon Mar 9 13:42:42 2009
@@ -79,6 +79,7 @@
menu.administration.userGroups = User Groups
menu.administration.roles = Roles
menu.administration.buildDefinitionTemplates = Build Definition Templates
+menu.administration.releases = Releases
menu.account.options = My account
user.edit.account = Edit user info
menu.administration.queues = Queues
@@ -1100,7 +1101,7 @@
# Page: View Distributed Build
# ----------------------------------------------------------------------
distributedBuilds.page.title = Continuum - View Distributed Builds
-distributedBuilds.section.title = Distributed Builds
+distributedBuilds.section.title = View Distributed Builds
distributedBuilds.buildQueue.section.title = Build Queue
distributedBuild.table.projectGroupName = Project Group Name
distributedBuild.table.scmRootAddress = Scm Root Address
@@ -1130,3 +1131,12 @@
buildAgentGroup.available.buildAgents.used = --- Used Build Agents ---
buildAgentGroup.buildAgents.define = Configure the used Build Agents
buildAgentGroup.error.remove.in.use = Build agent group can't be removed, it is probably used by a build environment.
+
+# ----------------------------------------------------------------------
+# Page: View Distributed Releases
+# ----------------------------------------------------------------------
+releases.page.title = Continuum - View Releases
+releases.section.title = View Releases
+releaseSummary.table.releaseId = Release ID
+releaseSummary.table.releaseGoal = Release Goal
+releaseSummary.table.buildAgentUrl = Build Agent URL
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=751678&r1=751677&r2=751678&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/resources/struts.xml (original)
+++ continuum/trunk/continuum-webapp/src/main/resources/struts.xml Mon Mar 9 13:42:42 2009
@@ -577,6 +577,10 @@
<param name="projectGroupId">${projectGroupId}</param>
</result>
</action>
+
+ <action name="viewReleases" class="distributedRelease" method="list">
+ <result name="success">/WEB-INF/jsp/releases.jsp</result>
+ </action>
</package>
<!--
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=751678&r1=751677&r2=751678&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 Mon Mar 9 13:42:42 2009
@@ -143,7 +143,13 @@
<s:text name="menu.administration.queues"/>
</s:a>
</div>
- </redback:ifAuthorized>
+ </redback:ifAuthorized>
+ <div class="body">
+ <s:url id="releasesUrl" action="viewReleases" namespace="/" includeParams="none"/>
+ <s:a href="%{releasesUrl}">
+ <s:text name="menu.administration.releases"/>
+ </s:a>
+ </div>
<redback:ifAuthorized permission="continuum-manage-build-templates">
<s:url id="buildDefinitionTemplatesUrl" action="buildDefinitionTemplates" namespace="/admin" includeParams="none"/>
<div class="body">
Added: continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/releases.jsp
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/releases.jsp?rev=751678&view=auto
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/releases.jsp (added)
+++ continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/releases.jsp Mon Mar 9 13:42:42 2009
@@ -0,0 +1,63 @@
+<%--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ --%>
+
+<%@ taglib uri="/struts-tags" prefix="s" %>
+<%@ taglib uri="http://www.extremecomponents.org" prefix="ec" %>
+<%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c'%>
+
+<html>
+ <s:i18n name="localization.Continuum">
+ <head>
+ <title><s:text name="releases.page.title"/></title>
+ </head>
+ <body>
+ <div id="h3">
+ <h3><s:text name="releases.section.title"/></h3>
+ <c:if test="${!empty actionErrors}">
+ <div class="errormessage">
+ <s:iterator value="actionErrors">
+ <p><s:text name="<s:property/>" /></p>
+ </s:iterator>
+ </div>
+ </c:if>
+ <s:set name="releasesSummary" value="releasesSummary" scope="request"/>
+ <ec:table items="releasesSummary"
+ var="releaseSummary"
+ showExports="false"
+ showPagination="false"
+ showStatusBar="false"
+ sortable="false"
+ filterable="false">
+ <ec:row>
+ <ec:column property="releaseId" title="releaseSummary.table.releaseId">
+ <s:url id="viewReleaseUrl" action="releaseInProgress">
+ <s:param name="releaseId">${pageScope.releaseSummary.releaseId}</s:param>
+ <s:param name="projectId">${pageScope.releaseSummary.projectId}</s:param>
+ <s:param name="releaseGoal">${pageScope.releaseSummary.releaseGoal}</s:param>
+ </s:url>
+ <s:a href="%{viewReleaseUrl}">${pageScope.releaseSummary.releaseId}</s:a>
+ </ec:column>
+ <ec:column property="releaseGoal" title="releaseSummary.table.releaseGoal"/>
+ <ec:column property="buildAgentUrl" title="releaseSummary.table.buildAgentUrl"/>
+ </ec:row>
+ </ec:table>
+ </div>
+ </body>
+ </s:i18n>
+</html>
\ No newline at end of file
Propchange: continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/releases.jsp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/releases.jsp
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision