sakai-2.6.3 maintenance release

WARNING Build javadoc jars (Can't do samigo-app fails)

WARNING Check /reference; delete sakai.properties files located there including demo.

WARNING Make sure entitbroker, emailtemplateservice and polls have only one entry in .externals after independent release of each.

2.6.3 branch prep

WARNING Require releases of EB, emailtemplateservice and Polls to eliminate all SNAPSHOT dependencies. Each project has been released with a parent of purepoms-2.6.3.

entitybroker, emailtemplateservice and polls are versioned independently and 2.6.x references SNAPSHOT versions of each. In order to eliminate all snapshot dependencies these tools require a tagged release generated from the respective 2.6.x branches

13-32-84:2.6.3 arwhyte$ svn del https://source.sakaiproject.org/svn/emailtemplateservice/branches/sakai-2.6.3/ -m "NOJIRA replace with tag"
Committed revision 81761.

13-32-84:2.6.3 arwhyte$ svn copy https://source.sakaiproject.org/svn/emailtemplateservice/tags/emailtemplateservice-0.3.5/ https://source.sakaiproject.org/svn/emailtemplateservice/branches/sakai-2.6.3 -m 'SAK-19034 use released emailtemplateservice tag for sakai-2.6.3 release branch'

Committed revision 81762.
13-32-84:2.6.3 arwhyte$ svn del https://source.sakaiproject.org/svn/entitybroker/branches/sakai-2.6.3/ -m "NOJIRA delete and replace with tagged release"

Committed revision 81763.
13-32-84:2.6.3 arwhyte$ svn copy https://source.sakaiproject.org/svn/entitybroker/tags/entitybroker-1.3.6.3/ https://source.sakaiproject.org/svn/entitybroker/branches/sakai-2.6.3 -m 'SAK-19034 use released entitybroker tag for sakai-2.6.3 release branch'

Committed revision 81764.
13-32-84:2.6.3 arwhyte$ svn del https://source.sakaiproject.org/svn/polls/branches/sakai-2.6.3/ -m "NOJIRA delete and replace with tagged release"

Committed revision 81765.
13-32-84:2.6.3 arwhyte$ svn copy https://source.sakaiproject.org/svn/polls/tags/polls-1.1.5/ https://source.sakaiproject.org/svn/polls/branches/sakai-2.6.3 -m 'SAK-19034 use released polls tag for sakai-2.6.3 release branch'

For each remember to

1. update <properties> in master pom to new versions.
2. update WAS project <properties> to match tag version
3. update .externals to point to tag

PROPERTIES SETTINGS (*.sakai.properties: default, demo, sample)

Version
version.service=RELEASE
version.sakai=2.6.3
version.service=DEMO
version.sakai=2.6.3
version.service=SAMPLE
version.sakai=2.6.3
Stealth settings

Stealth the following tools in both release and demo:

Release

# STEALTH TOOLS  
# A stealth tool is a tool that is running in Sakai but is not available to be added to a site in Worksite Setup.
# For Development/QA purposes stealthTools property will be commented out; release artifacts will have the property uncommented.
stealthTools@org.sakaiproject.tool.api.ActiveToolManager=sakai.mailtool,sakai.presentation

Demo

# STEALTH TOOLS.  A stealth tool is a tool that is running in Sakai, but is not available to be added to a site in Worksite Setup.
# In the demo edition all tools will be visible for support easy evaluation of the software.
stealthTools@org.sakaiproject.tool.api.ActiveToolManager=sakai.mailtool,sakai.presentation,sakai.search

(minus) Review reference/docs/sakai.properties AND reference/demo/sakai.properties version.service and version.sakai. These files should not have been updated by developers. Check logs for changes.

reference/demo/sakai.properties

version.service=DEMO
version.sakai=2.6.3

reference/docs/sakai.properties

version.service=RELEASE
version.sakai=2.6.3

POM UPDATES

Update all pom.xml <version> values from 2.6.0 to 2.6.3.
Update /master/pom.xml <sakai.version> from 2.6.0 to 2.6.3.
<sakai.version>2.6.3</sakai.version>
Ensure that /master/pom.xml sets the correct K1 release <property>.
<sakai.kernel.version>1.0.18</sakai.kernel.version>
Confirm /master/pom.xml Sakai Maven plugin <version> from 1.2.0

<plugin>
  <inherited>true</inherited>
  <groupId>org.sakaiproject.maven.plugins</groupId>
  <artifactId>sakai</artifactId>
    <version>1.2.0</version>
    . . . .
</plugin>
(minus) Comment out entitybroker, emailtemplateservice and polls base pom.xml <dependencyManagement> declarations. Do not commit changes as each of these projects represent tagged release code.
/pack-demo/pom.xml.

Confirm that pack-demo pom includes the binary artifact generation code.

PROJECT CONVERSION SCRIPTS (*runconversion.sh)

Check for presence of *runconversion.sh (in assignment, content (named content-runconversion.sh, db) and update embedded comments Sakai version to 2.6.3 and Kernel K1 version to 1.0.12.

dhcp-dc-prog13:branches arwhyte$ find 2.6.3/ -type f -name "*conversion.sh" -print
2.6.3//assignment/runconversion.sh
2.6.3//content/content-runconversion.sh
2.6.3//mailarchive/mailarchive-runconversion.sh

ECLIPSE METADATA FILES

Check Eclipse metadata files and ensure they include correct dependencies. If not run

mvn eclipse:clean eclipse:eclipse

and commit changes.

GENERATE RELEASE ARTIFACTS

Get copy of Maven2 repo

Mount Sakai Maven2 Repo using DAV (https:/source.sakaiproject.org/maven2 -> /Volumes/maven2). WARNING: create backup folder of maven2 so that only one copy operation is required in event of a generation failure. This takes far too long to accomplish. Just tar up maven2/org/sakaiproject and sftp or scp across the network. The challenge here is that you need all the Maven metadata files locally so that they can be properly updated during the release. Start thinking about using rsync.

Local build machine environment
  1. Check out 2.6.3 branch
  2. clean Tomcat 5.5.30
  3. empty .m2/repository/org/sakaiproject
  4. new MySQL 5.1.x sakai db
  5. Confirm maven-taglib is defined in .m2/settings.xml
<!-- Reference plugins in order to use <goalPrefix> short-hand -->
<pluginGroups>
    <pluginGroup>net.sourceforge.maven-taglib</pluginGroup>
</pluginGroups>
/master/pom.xml

(minus) Confirm <distributionManagement>, maven-taglib-plugin, wagon-webdav <build> extensions are in place. Commit changes if necessary.

1. <distributionManagement>

<distributionManagement>
    <repository>
      <uniqueVersion>false</uniqueVersion>
      <id>local</id>
      <name>Local Test</name>
      <url>file:///tmp/maven2</url>
      <layout>default</layout>
    </repository>
    <site>
      <id>local</id>
      <name>Local Test</name>
      <url>file:///tmp/site</url>
    </site>
  </distributionManagement>

2. maven-taglib-plugin

<plugin>
	<groupId>net.sourceforge.maven-taglib</groupId>
	<artifactId>maven-taglib-plugin</artifactId>
	<configuration>
		<goalPrefix>taglib</goalPrefix>
		<taglib.src.dir>src</taglib.src.dir>

		<!-- <taglib.src.dir>src/webapp/WEB-INF</taglib.src.dir> -->
	</configuration>
</plugin>

3. wagon-webdav <build> extension

<!-- Required for Dav -->
<extensions>
    <extension>
	<groupId>org.apache.maven.wagon</groupId>
	<artifactId>wagon-webdav</artifactId>
        <version>1.0-beta-2</version>
    </extension>
</extensions>
(minus) /reference/conversion

Review sql conversion scripts, update and commit as necessary.

base pom.xml

1. Confirm javadoc plugin definition. Should be configured as follows:

<plugin>
            <!-- javadocs -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
               <debug>true</debug>
               <links>
                  <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>
		  <link>http://java.sun.com/j2ee/1.5.0/docs/api/</link>
		  <link>http://static.springframework.org/spring/docs/2.0.8/api/</link>
		  <link>http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/</link>
		  <link>http://jakarta.apache.org/velocity/api/</link>
		  <link>http://www.hibernate.org/hib_docs/v3/api/</link>
		  <link>http://james.apache.org/javadocs/</link>
		  <link>http://james.apache.org/mailet/</link>
               </links>
               <breakiterator>true</breakiterator>
               <verbose>false</verbose>
               <aggregate>true</aggregate>
               <maxmemory>512m</maxmemory>
               <additionalJOption>-J-Xms168m -J-Xmx512m -J-XX:PermSize=128m -J-XX:NewSize=64m</additionalJOption>
               <version>2.3</version>
            </configuration>
         </plugin>

2. Confirm that taglib profile is included.

<profile>
      	<id>taglib</id>
      	<modules>
		 <module>gradebook/app/ui</module>
		 <module>help/help-tool</module>
		 <module>jsf/widgets</module>
		 <module>mailtool/mailtool</module>
		 <module>metaobj/metaobj-util/tool-lib</module>
		 <module>msgcntr/messageforums-app</module>
		 <module>osp/common/tool-lib</module>
		 <module>osp/glossary/tool-lib</module>
		 <module>osp/jsf/widgets</module>
		 <module>osp/presentation/tool-lib</module>
		 <module>podcasts/podcasts-app</module>
		 <module>postem/postem-app</module>
		 <module>profile/profile-app</module>
		 <module>roster/roster-app</module>
		 <module>rwiki/rwiki-tool/tool</module>
		 <module>sam/samigo-app</module>
		 <module>sections/sections-app</module>
		 <module>sections/sections-app-util</module>
		 <module>syllabus/syllabus-app</module>
      	</modules>
<profile>
Copy sakaiartifactgenerator-2.6.sh to local 2.6.3 branch checkout folder and run
sh sakaiartifactgenerator.sh 2.6.3 storepass keystore

The artifactgenerator script performs the following steps

1. clean out previous builds
2. clean out target, m2-target, bin
3. clean out /tmp/maven2

4. updates <version> (M2 to 2.6.3) in
all pom.xml
all .classpath
all runconversion.sh, also content-runconversion.sh

The script pauses to allow the changes to be committed. Once the commits are completed, update the .externals file (all projects) to r52308 in preparation for cutting the final release tag.

sed -e "s/ -r [0-9]*/ -r 52308/" <.externals >.externals.tmp
cp .externals.tmp .externals
rm -f .externals.tmp

svn propset -F .externals svn:externals .
svn propget svn:externals
svn commit -m "tag prep for next release"

Resume script run.

5. tar up the source code (samigo-audio jar is not signed)

The script then pauses to allow a manual modification of samigo-audio pom.xml to uncomment the jar sign execution goal. Uncomment the maven-jar-plugin. Comment out <keystore>, <alias> and <storepass>.

WARNING DO NOT COMMIT this change to the samigo-audio pom.xml file.

    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-jar-plugin</artifactId>
        <executions>
           <execution>
              <goals>
                 <goal>sign</goal>
              </goals>
           </execution>
        </executions>
        <configuration>
<!--
           <keystore>/somepath/your.keystore</keystore>
           <alias>youralias</alias>
           <storepass>yourpassword</storepass>
-->
           <verify>true</verify>
        </configuration>
      </plugin>
    </plugins>

6. perform the following mvn actions:

mvn install (in /master)
mvn -Ppack-demo install -Dkeystore=${location}/Sakai.keystore -Dalias=sakai -Dstorepass=${KEYSTOREPASS}
mvn install source:jar source:test-jar deploy -Dkeystore=${location}/Sakai.keystore -Dalias=sakai -Dstorepass=${KEYSTOREPASS}
mvn javadoc:javadoc
mvn -Ptaglib taglib:taglibdocjar deploy

where ${KEYSTOREPASS} is the keystore password and Sakai.keystore contains the certificates.

7. then package up
the maven repo in /tmp/maven2
the javadoc
the sakai-demo and sakai-bin artifacts
the taglibsdocs

Check samigo audio jar for signature
jarsigner -verify sakai-samigo-audio-2.6.3.jar
Check artifacts

1. Build and deploy the sakai-src artifact.

WARNING do not issue clean and install goals or local repo will get wiped prematurely (Sakai maven2 repo has yet to be updated).

cd master
mvn install
cd ..
mvn -o -Dmaven.test.skip=true sakai:deploy

2. Run the demo artifact.

Update Sakai Maven2 repo

1. Make backup copy of current maven2/org/sakaiproject folder where x.x.x equals the previous Sakai release number. Then untar updated files:

sudo tar -xvzf mavenrepo-2.6.3.tgz -C /var/www/html/

Generate checksums (example)

md5sum sakai-bin-2.6.3.tar.gz > sakai-bin-2.6.3_tar_gz.md5

Cut release tag from 2.6.3 branch

The sakaitagbuilder.bash script accepts two arguments: Sakai version and tag suffix (e.g., blank, beta01, rc01, qa01). In this case no tag suffix is required.

Remove build script before cutting tag.

Update .svnignore and commit changes.

Add

sakaiartifactgenerator.sh
bash sakaitagbuilder-2.6.bash [JIRA ISSUE] sakai-2.6.3 tags 2.6.3

After the release is generated, backup .m2/repository/org/sakaiproject, whack original (to ensure someone new can populate their repo from scratch), download the release tag and build and deploy it to a fresh Tomcat and fresh MySQL database.

Build release page

Make sure that external links to Confluence release pages are updated.