sakai-3.0.0-milestone01

3.0.0-milestone01 branch prep

Create .externals_2-6-x_etal_to_3.0.0-milestone01 file

(tick) Documents the 2.6.x revisions and trunk projects that were used to construct this branch.

sakai.properties updates
1. Release.

(warning) Make sure .classpath files are updated to include new dependencies.

mvn eclipse:clean
mvn eclipse:eclipse

(warning) Binding to Kernel 1.0.0 so this update cannot be made.

Update component/component-api/component/src/config/org/sakaiproject/config/sakai.properties updating version.service, version.sakai and uncommenting stealthToolsstealthTools@org.sakaiproject.tool.api.ActiveToolManager. Commit changes.

version.service=EXPERIMENTAL
version.sakai=3.0.0-milestone01
. . .
# 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=blogger,sakai.messagecenter,sakai.podcasts,sakai.postem,sakai.rutgers.linktool,sakai.rutgers.testlink,sakai.search,sakai.site.roster

2. Demo and Sample

(tick) r56478. Update reference/docs/sakai.properties version.service and version.sakai. Make sure stealthedTools property is commented out (i.e., enabling all provisional tools for the demo). Commit changes.

version.service=DEMO
version.sakai=3.0.0-milestone01
pom.xml updates
0. Update /master/pom.xml <sakai.version> from M2 to 3.0.0-milestone01.

(tick) <sakai.version>3.0.0-milestone01</sakai.version>.

1. Leave /master/pom.xml Sakai Maven plugin <version> 1.2-SNAPSHOT

(tick) Done.

<plugin>
        <inherited>true</inherited>
        <groupId>org.sakaiproject.maven.plugins</groupId>
        <artifactId>sakai</artifactId>
        <version>1.2-SNAPSHOT</version>
        <extensions>true</extensions>
        <configuration>
          <deployDirectory>${maven.tomcat.home}</deployDirectory>
          <warSourceDirectory>${basedir}/src/webapp</warSourceDirectory>
        </configuration>
</plugin>
2. Update all pom.xml <version> values from M2 to 3.0.0-milestone01.

(tick) Done.

3. entitybroker/pom.xml

(tick) r56479 Remove <distributionManagement> directive which disrupts build process as well as other extraneous definitions. Commit changes.

3. sdata/pom.xml

(tick) r56480 Remove <distributionManagement> directive which disrupts build process as well as other extraneous definitions. Commit changes.

4. /pack-demo/pom.xml.

(warning) No demo or binary artifacts will be generated for this release. Confirm that pack-demo pom includes the binary artifact generation code.

http://jira.sakaiproject.org/jira/browse/SAK-13214

5. Update gradebook service pom.xml to include missing <groupId>

(tick) Done. r56467

.svnignore

(tick) r56481 Update .svnignore and commit changes.

Add

Sakai.keystore
sakaiartifactgenerator.sh
Update .externals

Check out 3.0.0-milestone01 branch .externals to local tag prep folder and update revision numbers to last commit from above steps. This ensures that the next checkout will include all branch prep commits.

/Users/arwhyte/Documents/whyteBoy/Development/svn/sakai_tag_prep
svn co -N https://source.sakaiproject.org/svn/sakai/branches/sakai-3.0.0-milestone01 sakai-3.0.0-milestone01_branch

(!) When running sed watch out for mucking up the content-review project when searching on -r.

sed 's/-r 56380/-r 56481/' < .externals > .externals_temp
cp .externals_temp .externals

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

Check out 3.0.0-milestone01 branch again and confirm checkout includes all tag prep commits as well as updated .externals.

Release Prep

Local build machine environment
  1. Check out 3.0.0-milestone01 branch
  2. clean Tomcat 5.5.26
  3. empty .m2/repository/org/sakaiproject
  4. new MySQL 5.0.51 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>
favicon

(minus) Ignored. Replace Tomcat favicon.ico with Sakai favicon. Add it to reference library. Pack-demo pom.xml snippet below:

<!-- Replace the favorite icon from tomcat -->
<copy file="${basedir}/../reference/library/src/webapp/icon/favicon.ico"
tofile="${basedir}/target/pack/webapps/ROOT/favicon.ico"
overwrite="true" />
conversion scripts (runconversion.sh)

(tick) Check for presence of *runconversion.sh (in assignment, content and mailarchive and make sure names get trapped by artifact generation script.

/master/pom.xml

(tick) Confirm <distributionManagement>, maven-taglib-plugin, wagon-webdav <build> extensions are in place and that the org.sakaiproject.maven.plugins <version> is set to 1.2-SNAPSHOT. 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. Added r 56484 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

(warning) Ignored for this release. Should be run against an empty db. 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>

Update .externals

Check out 3.0.0-milestone01 branch .externals to local tag prep folder and update revision numbers to last tag prep commit. This ensures that the next checkout will include all tag prep commits.

cd /Users/arwhyte/Development/svn/sakai_tag_prep
svn co -N https://source.sakaiproject.org/svn/sakai/branches/sakai_3.0.0-milestone01 sakai_3.0.0-milestone01_branch

Update manually component project only in .externals. Do not run sed and overwrite other projects.

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

Check out 3.0.0-milestone01 branch again and confirm checkout includes all tag prep commits as well as updated .externals. Test branch by cleaning, installing, building and deploying to Tomcat.

[INFO] Building Sakai Master
[INFO]    task-segment: [clean, install, sakai:deploy]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean]
[INFO] [site:attach-descriptor]
[INFO] [install:install]
[INFO] Installing /Users/arwhyte/Documents/whyteBoy/Development/svn/sakai/branches/sakai-3.0.0-milestone01-200901221349/master/pom.xml to /Users/arwhyte/.m2/repository/org/sakaiproject/master/3.0.0-milestone01/master-3.0.0-milestone01.pom
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Internal error in the plugin manager executing goal 'org.sakaiproject.maven.plugins:sakai:1.2-SNAPSHOT:deploy': Unable to find the mojo 'org.sakaiproject.maven.plugins:sakai:1.2-SNAPSHOT:deploy' in the plugin 'org.sakaiproject.maven.plugins:sakai'
Component descriptor cannot be found in the component repository: org.apache.maven.plugin.Mojoorg.sakaiproject.maven.plugins:sakai:1.2-SNAPSHOT:deploy.

Looks like this build error was caused by conflicts with /sdata and /ux <build> sections which included hard references to org.sakaiproject.maven.plugins ver 1.0. Commented out the plugins.

(tick) r 56488 Note: there are Sakai *-SNAPSHOT dependency refs in /emailtemplateservice (0.3-SNAPSHOT), /entitybroker (1.3.5-SNAPSHOT), /master (EB refs) /polls (1.1-SNAPSHOT), /sections (K1 1.0RC2-SNAPSHOT), /taggable (hib3-maven-plugin 2.0-SNAPSHOT), /ux (1.0-SNAPSHOT) and /was (2.6.0-SNAPSHOT).

(warning) These need to be fixed in trunk and the 2.6.x branch.

Generate Release artifacts

1. 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.
2. Copy sakaiartifactgenerator.sh to local 3.0.0-milestone01 branch checkout folder and run

sh sakaiartifactgenerator.sh 3.0.0-milestone01 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 3.0.0-milestone01) in
all pom.xml-
(warning) all .classpath
(warning) all runconversion.sh, also content-runconversion.sh

(minus) The *runconversion.sh scripts include references to pre-K1 jars. I'm going to ignore this issue for this experimental release. I've Jira'd the issue.

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

The script 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-3.0.0-milestone01.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.
3. Checkout 3.0.0-milestone01 branch and import into Eclipse. Check pom.xml files for correct revision.

Update Sakai Maven2 repo

1. Make backup copy of current /org/sakaiproject folder where x.x.x equals the previous Sakai release number.

sudo cp -R sakaiproject sakaiproject.x.x.x

2. Copy and Explode tar into repo

Tar structure: maven2/org/sakaiproject/all project files

tar -xzf mavenrepo-2.5.2.tgz -C /var/www/html/

Check repo permissions

Make sure maven2 repo folder permissions are set properly:

sudo chown -R apache:apache sakaiproject

Generate checksums (example)

md5sum sakai-bin-3.0.0-milestone01.tar.gz > sakai-bin-3.0.0-milestone01_tar_gz.md5

Test release artifacts

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.

Cut release tag from 3.0.0-milestone01 branch

bash sakaitagbuilder.bash sakai-3.0.0-milestone01 tags 3.0.0 milestone01

Build release page

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

JIRAs (trunk and 2.6.x)

1. sdata and ux – remove redundant elements from poms
2. sample-grade-finalizer pom.xml - does it need <build> plugins?
3. sections-impl integration-support includes a hard dependency on K1 RC01

    <dependency>
      <groupId>org.sakaiproject.kernel.impl</groupId>
      <artifactId>sakai-util-impl</artifactId>
      <version>1.0RC2-SNAPSHOT</version>
    </dependency>

4. /was wrong version number (2.6.0-SNAPSHOT).
5. Eclipse metadata files (.classpath, .project) are out of date for trunk, 2-6-x, 2.5.4, 2-5-x and other branches.