Skip to content

Commit

Permalink
[JENKINS-18281] Changed change log parser
Browse files Browse the repository at this point in the history
  • Loading branch information
wolfgarnet committed Aug 22, 2013
1 parent 4c35251 commit 84368a0
Show file tree
Hide file tree
Showing 7 changed files with 74 additions and 39 deletions.
3 changes: 2 additions & 1 deletion src/main/java/net/praqma/hudson/CCUCMBuildAction.java
Expand Up @@ -45,10 +45,11 @@ public class CCUCMBuildAction implements Action {

/**
* Determine whether to trim the change set or not.
* Not persisted due to large memory foot print.
*
* @since 1.4.0
*/
private boolean trimmedChangeSet = false;
private transient boolean trimmedChangeSet = false;

/**
* The found {@link Baseline} for the build
Expand Down
71 changes: 48 additions & 23 deletions src/main/java/net/praqma/hudson/Util.java
Expand Up @@ -54,28 +54,46 @@ public Stream getDeveloperStream( String streamname, PVob pvob, Stream buildInte
return devstream;
}

public static String createChangelog( List<Activity> changes, Baseline bl ) {
StringBuffer buffer = new StringBuffer();
public static String createChangelog( List<Activity> activities, Baseline bl, boolean trimmed ) {
logger.fine( "Generating change set, " + trimmed );
ChangeSetGenerator csg = new ChangeSetGenerator().createHeader( bl.getShortname() );

if( trimmed ) {
VersionList vl = new VersionList().addActivities( activities ).setBranchName( "^.*" + Cool.qfs + bl.getStream().getShortname() + ".*$" );
Map<Activity, List<Version>> changeSet = vl.getLatestForActivities();
for( Activity activity : changeSet.keySet() ) {
csg.addAcitivity( activity.getShortname(), activity.getHeadline(), activity.getUser(), changeSet.get( activity ) );
}
} else {
for( Activity activity : activities ) {
VersionList versions = new VersionList( activity.changeset.versions ).getLatest();
csg.addAcitivity( activity.getShortname(), activity.getHeadline(), activity.getUser(), versions );
}
}

return csg.close().get();
}

public static class ChangeSetGenerator {
private StringBuilder buffer = new StringBuilder( );

buffer.append( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" );
buffer.append( "<changelog>" );
buffer.append( "<changeset>" );
buffer.append( "<entry>" );
buffer.append( ( "<blName>" + bl.getShortname() + "</blName>" ) );
public ChangeSetGenerator createHeader( String header ) {
buffer.append( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" );
buffer.append( "<changelog>" );
buffer.append( "<changeset>" );
buffer.append( "<entry>" );
buffer.append( ( "<blName>" + header + "</blName>" ) );

VersionList vl = new VersionList().addActivities( changes ).setBranchName( "^.*" + Cool.qfs + bl.getStream().getShortname() + ".*$" );
Map<Activity, List<Version>> changeSet = vl.getLatestForActivities();
logger.fine( "The change set: " + changeSet );
return this;
}

for( Activity activity : changeSet.keySet() ) {
public ChangeSetGenerator addAcitivity( String name, String header, String username, List<Version> versions ) {
buffer.append( "<activity>" );
buffer.append( ( "<actName>" + activity.getShortname() + "</actName>" ) );
buffer.append( ( "<actHeadline>" + activity.getHeadline() + "</actHeadline>" ) );
buffer.append( ( "<author>" + activity.getUser() + "</author>" ) );
//List<Version> versions = activity.changeset.versions;
//VersionList versions = new VersionList( activity.changeset.versions ).getLatest();
buffer.append( "<actName>" + name + "</actName>" );
buffer.append( "<actHeadline>" + header + "</actHeadline>" );
buffer.append( "<author>" + username + "</author>" );
String temp = null;
for( Version v : changeSet.get( activity ) ) {
for( Version v : versions ) {
try {
temp = "<file>" + v.getSFile() + " (" + v.getVersion() + ") user: " + v.blame() + "</file>";
} catch( ClearCaseException e ) {
Expand All @@ -85,14 +103,21 @@ public static String createChangelog( List<Activity> changes, Baseline bl ) {
}
buffer.append( "</activity>" );

}
buffer.append( "</entry>" );
buffer.append( "</changeset>" );
return this;
}

buffer.append( "</changelog>" );
public ChangeSetGenerator close() {
buffer.append( "</entry>" );
buffer.append( "</changeset>" );
buffer.append( "</changelog>" );

return buffer.toString();
}
return this;
}

public String get() {
return buffer.toString();
}
}

public static SnapshotView makeView( Stream stream, File workspace, BuildListener listener, String loadModule, File viewroot, String viewtag ) throws ScmException {
return makeView( stream, workspace, listener, loadModule, viewroot, viewtag, true );
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/net/praqma/hudson/remoting/CheckoutTask.java
Expand Up @@ -132,13 +132,13 @@ public EstablishResult invoke( File workspace, VirtualChannel channel ) throws I
}
}

diff = Util.createChangelog( bldiff, bl );
hudsonOut.print( "[" + Config.nameShort + "] Found " + bldiff.size() + " activit" + ( bldiff.size() == 1 ? "y" : "ies" ) + ". " );
int c = 0;
//diff = Util.createChangelog( bldiff, bl );
//hudsonOut.print( "[" + Config.nameShort + "] Found " + bldiff.size() + " activit" + ( bldiff.size() == 1 ? "y" : "ies" ) + ". " );
//int c = 0;
er.setActivities( bldiff );

logger.fine( id + "DONE" );
hudsonOut.println( c + " version" + ( c == 1 ? "" : "s" ) + " involved" );
//hudsonOut.println( c + " version" + ( c == 1 ? "" : "s" ) + " involved" );

logger.info( "CheckoutTask finished normally" );

Expand Down
10 changes: 5 additions & 5 deletions src/main/java/net/praqma/hudson/remoting/RemoteDeliver.java
Expand Up @@ -120,23 +120,23 @@ public EstablishResult invoke( File workspace, VirtualChannel channel ) throws I

logger.fine( "View: " + workspace );

String diff = "";
//String diff = "";

List<Activity> bldiff = new ArrayList<Activity>( );
try {
bldiff = Version.getBaselineDiff( destinationStream, baseline, true, snapview.getViewRoot() );
out.print( "[" + Config.nameShort + "] Found " + bldiff.size() + " activit" + ( bldiff.size() == 1 ? "y" : "ies" ) + ". " );
diff = Util.createChangelog( bldiff, baseline );
//out.print( "[" + Config.nameShort + "] Found " + bldiff.size() + " activit" + ( bldiff.size() == 1 ? "y" : "ies" ) + ". " );
//diff = Util.createChangelog( bldiff, baseline );
} catch( Exception e1 ) {
out.println( "[" + Config.nameShort + "] Unable to create change log: " + e1.getMessage() );
}

logger.fine( "Changeset created" );
//logger.fine( "Changeset created" );

EstablishResult er = new EstablishResult( viewtag );
er.setView( snapview );
er.setActivities( bldiff );
er.setMessage( diff );
//er.setMessage( diff );

/* Make the deliver. Inline manipulation of er */
try {
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/net/praqma/hudson/scm/CCUCMScm.java
Expand Up @@ -333,7 +333,9 @@ private boolean initializeWorkspace( AbstractBuild<?, ?> build, FilePath workspa
EstablishResult er = null;
CheckoutTask ct = new CheckoutTask( listener, jobName, build.getNumber(), action.getStream(), loadModule, action.getBaseline(), buildProject, ( plevel == null ), action.doRemoveViewPrivateFiles() );
er = workspace.act( ct );
String changelog = er.getMessage();
//String changelog = er.getMessage();
String changelog = "";
changelog = Util.createChangelog( er.getActivities(), action.getBaseline(), trimmedChangeSet );
action.setActivities( er.getActivities() );

this.viewtag = er.getViewtag();
Expand Down Expand Up @@ -906,7 +908,7 @@ public boolean getForceDeliver() {
return forceDeliver;
}

private boolean isTrimmedChangeSet() {
public boolean isTrimmedChangeSet() {
return trimmedChangeSet;
}

Expand Down
Expand Up @@ -79,7 +79,7 @@
</f:entry>

<f:entry title="Trimmed change set" help="/plugin/clearcase-ucm-plugin/scm/help-trimmedChangeSet.html">
<f:checkbox name="CCUCM.trimmedChangeSet" checked="${scm.trimmedChangeSet}" default="false"/>
<f:checkbox name="CCUCM.trimmedChangeSet" checked="${scm.trimmedChangeSet}" default="false" />
</f:entry>

<f:entry title="Build project" help="/plugin/clearcase-ucm-plugin/scm/help-buildProject.html">
Expand Down
13 changes: 10 additions & 3 deletions src/test/java/net/praqma/hudson/test/CCUCMRule.java
Expand Up @@ -78,6 +78,7 @@ public enum Type {
boolean createBaseline = false;
boolean forceDeliver = false;
boolean swipe = true;
boolean trim = false;

String template = "[project]_build_[number]";
PromotionLevel promotionLevel = PromotionLevel.INITIAL;
Expand Down Expand Up @@ -137,6 +138,11 @@ public ProjectCreator setSwipe( boolean swipe ) {
return this;
}

public ProjectCreator setTrim( boolean trim ) {
this.trim = trim;
return this;
}

public Project getProject() throws IOException {
System.out.println( "==== [Setting up ClearCase UCM project] ====" );
System.out.println( " * Stream : " + stream );
Expand All @@ -150,13 +156,14 @@ public Project getProject() throws IOException {
System.out.println( " * Template : " + template );
System.out.println( " * Force deliver : " + forceDeliver );
System.out.println( " * Swipe : " + swipe );
System.out.println( " * Trim : " + trim );
System.out.println( "============================================" );

Project project = (Project) Hudson.getInstance().createProject( projectClass, name );

// boolean createBaseline, String nameTemplate, boolean forceDeliver, boolean recommend, boolean makeTag, boolean setDescription
//CCUCMScm scm = new CCUCMScm( component, "INITIAL", "ALL", false, type, stream, "successful", createBaseline, "[project]_build_[number]", forceDeliver, recommend, tag, description, "jenkins" );
CCUCMScm scm = new CCUCMScm( component, ( promotionLevel != null ? promotionLevel.name() : "ANY" ), "ALL", false, type.name(), stream, "successful", createBaseline, template, forceDeliver, recommend, tag, description, "", swipe );
CCUCMScm scm = new CCUCMScm( component, ( promotionLevel != null ? promotionLevel.name() : "ANY" ), "ALL", false, type.name(), stream, "successful", createBaseline, template, forceDeliver, recommend, tag, description, "", swipe, trim );
project.setScm( scm );

return project;
Expand Down Expand Up @@ -196,7 +203,7 @@ public FreeStyleProject setupProject( String projectName, String type, String co

// boolean createBaseline, String nameTemplate, boolean forceDeliver, boolean recommend, boolean makeTag, boolean setDescription
//CCUCMScm scm = new CCUCMScm( component, "INITIAL", "ALL", false, type, stream, "successful", createBaseline, "[project]_build_[number]", forceDeliver, recommend, tag, description, "jenkins" );
CCUCMScm scm = new CCUCMScm( component, promotionLevel, "ALL", false, type, stream, "successful", createBaseline, template, forceDeliver, recommend, tag, description, "", true );
CCUCMScm scm = new CCUCMScm( component, promotionLevel, "ALL", false, type, stream, "successful", createBaseline, template, forceDeliver, recommend, tag, description, "", true, false );
this.scm = scm;
project.setScm( scm );

Expand All @@ -217,7 +224,7 @@ public CCUCMScm getCCUCM( String type, String component, String stream, String p
System.out.println( " * Force deliver : " + forceDeliver );
System.out.println( "============================================" );

CCUCMScm scm = new CCUCMScm( component, promotionLevel, "ALL", false, type, stream, "successful", createBaseline, template, forceDeliver, recommend, tag, description, "", true );
CCUCMScm scm = new CCUCMScm( component, promotionLevel, "ALL", false, type, stream, "successful", createBaseline, template, forceDeliver, recommend, tag, description, "", true, false );

return scm;
}
Expand Down

0 comments on commit 84368a0

Please sign in to comment.