sakai-2.5.6 maintenance release prep
2.5.6 branch prep
Create .externals_2.5.xto2.5.6 file (r71611)
Documents the 2.5.x revisions (all r71611) that were used to construct this branch.
svn import tmpexternals https://source.sakaiproject.org/svn/sakai/branches/sakai-2.5.6 -m "add .externals_2.5.xto2.5.6"
sakai.properties updates
1. Release.
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=RELEASE version.sakai=2.5.6 . . . # 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
Update reference/docs/sakai.properties
AND reference/demo/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.
reference/demo/sakai.properties
version.service=DEMO version.sakai=2.5.6
reference/docs/sakai.properties
version.service=DEV version.sakai=2.5.6
pom.xml updates
0. Update /master/pom.xml <sakai.version> from M2 to 2.5.6.
<sakai.version>2.5.6</sakai.version>.
1. Update /master/pom.xml Sakai Maven plugin <version> from M2 to 1.0.
Done.
<plugin> <inherited>true</inherited> <groupId>org.sakaiproject.maven.plugins</groupId> <artifactId>sakai</artifactId> <version>1.0</version> . . . . </plugin>
2. Update all pom.xml <version> values from M2 to 2.5.6.
Done.
3. entitybroker/pom.xml
Remove <distributionManagement> directive which disrupts build process as well as other extraneous definitions. Commit changes.
4. /pack-demo/pom.xml.
Confirm that pack-demo pom includes the binary artifact generation code.
5. Update *conversion.sh script path and jar names
Check for presence of *runconversion.sh (in assignment, content (named content-runconversion.sh, db) and update from "M2" to 2.5.6.
.svnignore
Update .svnignore
and commit changes.
Add
Sakai.keystore sakaiartifactgenerator.sh
Release Prep
Local build machine environment
- Check out 2.5.6 branch
- clean Tomcat 5.5.26
- empty .m2/repository/org/sakaiproject
- new MySQL 5.0.51 sakai db
- 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
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" />
/master/pom.xml
Confirm <distributionManagement>
, maven-taglib-plugin
, wagon-webdav <build>
extensions are in place and that the org.sakaiproject.maven.plugins <version> is set to 1.0. 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>
/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>
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 2.5.6 branch checkout folder and run
sh sakaiartifactgenerator.sh 2.5.6 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.5.6) 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.5.6.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 2.5.6 branch and import into Eclipse. Check pom.xml files for correct revision.
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.5.6.tgz -C /var/www/html/
Generate checksums (example)
md5sum sakai-bin-2.5.6.tar.gz > sakai-bin-2.5.6_tar_gz.md5
Cut release tag from 2.5.6 branch
The sakaitagbuilder.bash script accepts six arguments: Jira issue number, source branch, take head of branch (true/false) target (branches/tags) new version and new version suffix. In this case no tag suffix is required.
bash sakaitagbuilder.bash SAK-17611 sakai-2.5.6 true tags 2.5.6
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.