Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

Non-indie release branches (as well as tags) are created using the following bash script.

TODO: add URL

The script takes six arguments.

...

Update pom.xml <version>, master pom.xml <properties>, sakai.properties

1. Update <version>

...

; find/replace 2.*-SNAPSHOT with release version
Code Block
xml
xml
<version>2.8-SNAPSHOT</version> -> <version>2.8.1</version> 

...

No Format
version.service=RELEASE
version.sakai=2.8.1

...

Double check /reference/docs/conversion

(warning) Review sql conversion scripts, update and commit as necessary.

/master/pom.xml

...

: confirm <distributionManagement>, maven-taglib-plugin and Sakai maven plugin settings. Commit changes if necessary.

...

1. <distributionManagement>

...

Code Block
xml
xml

<distributionManagement>
 <plugin>   <repository>
<inherited>true</inherited>   <groupId>org.sakaiproject.maven.plugins</groupId>
  <artifactId>sakai</artifactId>   <uniqueVersion>false</uniqueVersion>
      <id>local</id>
      <name>Local Test</name>
      <version>1.2.0</version><url>file:///tmp/maven2</url>
      <layout>default</layout>
. . . . </plugin>

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.8.1 branch
  2. clean Tomcat 5.5.33
  3. empty .m2/repository/org/sakaiproject
  4. new MySQL 5.1.x sakai db
  5. Confirm maven-taglib is defined in .m2/settings.xml
No Format

<!-- 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>

Code Block
xmlxml

<distributionManagement>
    <repository>repository>
    <site>
      <id>local</id>
      <name>Local Test</name>
      <url>file:///tmp/site</url>
    </site>
  </distributionManagement>

(warning) Consider deploying directly to Maven2 release repo. See rationale below.

Code Block
xml
xml

<distributionManagement>
        <downloadUrl>http://source.sakaiproject.org/maven2/</downloadUrl>
        <snapshotRepository>
            <uniqueVersion>false</uniqueVersion>
            <id>sakai-maven-snapshots-scp</id>
            <name>Sakai snapshot Repo</name>
            <url>scp://source.sakaiproject.org/var/www/html/maven2-snapshots</url>
            <layout>default</layout>
        </snapshotRepository>
        <repository>
            <uniqueVersion>false</uniqueVersion>
 
    <id>local</id>       <name>Local Test</name><id>sakai-maven2-scp</id>
       <url>file:///tmp/maven2</url>     <name>Sakai maven2 <layout>default<repository</layout>name>
     </repository>     <site>  <url>scp://source.sakaiproject.org/var/www/html/maven2</url>
    <id>local</id>       <name>Local Test<<layout>default</name>layout>
        <url>file:///tmp/site</url></repository>
       </site> <site>
 </distributionManagement> 

2. maven-taglib-plugin

Code Block
xmlxml
 <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

Code Block
xmlxml

<!-- Required for Dav -->
<extensions> <id>sakai-site</id>
            <name>Sakai <extension>
	<groupId>org.apache.maven.wagon</groupId>
	<artifactId>wagon-webdav</artifactId>release Site</name>
            <version>1.0-beta-2</version>
<url>${url.localsite}</url>
        </site>
   </extension> </extensions>distributionManagement>
(minus) /reference/conversion

Review sql conversion scripts, update and commit as necessary.

base pom.xml

...

2. maven-taglib-plugin

...

Code Block
xml
xml
<plugin>
                	<groupId>net.sourceforge.maven-taglib</groupId>
	<artifactId>maven-taglib-plugin</artifactId>
	<configuration>
		<goalPrefix>taglib</goalPrefix>
		<taglib.src.dir>src</taglib.src.dir>
		<!-- javadocs<taglib.src.dir>src/webapp/WEB-INF</taglib.src.dir> -->
             	</configuration>
</plugin>

...

3. Confirm sakai maven plugin <version> equals 1.2.0

...

Code Block
xml
xml

<plugin>
  <inherited>true</inherited>
  <groupId>org.apachesakaiproject.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
          <artifactId>sakai</artifactId>
     <version>2<version>1.62.1<0</version>
    . . . .
</plugin>

...

4. Disable snapshot repo

...

(tick) Insulate deployers against the possibility of snapshots leaking into release.

Code Block
xml
xml
<repositories>
. . .
  <configuration>   <repository>
                 <debug>true</debug>
  <id>sakai-maven2-snapshots</id>
            <name>Sakai Maven Repo</name>
  <links>          <layout>default</layout>
              <link>http<url>http://javasource.sunsakaiproject.comorg/j2se/1.5.0/docs/api/maven2-snapshots</url>
            <snapshots>
                </link><enabled>false</enabled>
            </snapshots>
            <releases>
</links>                <enabled>false</enabled>
     <breakiterator>true</breakiterator>       </releases>
     </repository>
. . .
<repositories>
Base pom.xml: confirm javadoc plugin definition. Beware setting max memory settings too low.
Code Block
xml
xml
<plugin>
 <verbose>false</verbose>               <groupId>org.apache.maven.plugins</groupId>
     <aggregate>true</aggregate>           <artifactId>maven-javadoc-plugin</artifactId>
             <maxmemory>512m</maxmemory>   <version>2.8</version>
                <configuration>
    <additionalJOption>-J-Xms168m -J-Xmx512m -J-XX:PermSize=128m -J-XX:NewSize=64m</additionalJOption>              <debug>true</debug>
  </configuration> </plugin>

2. Confirm that taglib profile is included.

Code Block
xmlxml
    <profile>        <id>taglib</id>     <links>
       <modules>                 <module>gradebook/app/ui</module><link>http://download.oracle.com/javase/1.5.0/docs/api/</link>
                        <module>help/help-tool</module><link>http://download.oracle.com/javase/6/docs/api/</link>
                <!-- <module>jsf/jsf-widgets</module> -->   </links>
             <module>metaobj/metaobj-util/tool-lib</module>       <breakiterator>true</breakiterator>
         <!-- <module>msgcntr/messageforums-app</module> -->         <verbose>false</verbose>
       <module>osp/common/tool-lib</module>             <aggregate>true</aggregate>
   <module>osp/glossary/tool-lib</module>                 <module>osp/jsf/widgets</module><minmemory>168m</minmemory>
                    <module>osp/presentation/tool-lib</module><maxmemory>1024m</maxmemory>
                     <module>podcasts/podcasts-app</module><additionalJOption>-J-Xms168m -J-Xmx1024m -J-XX:PermSize=128m -J-XX:NewSize=64m</additionalJOption>
                <module>postem/postem-app</module>
   </configuration>
            <!-- <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>
Run sakaiartifactgenerator.bash
No Format

sh sakaiartifactgenerator.sh 2.8.1 /Users/arwhyte/Development/svn/sakai/branches/sakai-2.8.1
Download and check samigo audio jar for signature
No Format

jarsigner -verify sakai-samigo-audio-2.8.1.jar
Check artifacts

1. Build and deploy the sakai-src archives.

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

No Format

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

2. Test the sakai-bin archives

Check that the ant task built the archives correctly. Fix if necessary as follows:

No Format

tar -czvf sakai-bin/plugin>

Check out, install, deploy and start up the release branch in Tomcat.

Perform a test build of the release branch.

Local environment set up

  1. Delete .m2/repository/org/sakaiproject (force fresh install)
  2. Create new MySQL 5.1.x database named "sakai"
  3. Start with clean Tomcat 5.5.33 servlet container
  4. Confirm maven-taglib is defined in .m2/settings.xml
Code Block
xml
xml

<!-- Reference plugins in order to use <goalPrefix> short-hand -->
<pluginGroups>
    <pluginGroup>net.sourceforge.maven-taglib</pluginGroup>
</pluginGroups>
No Format

svn co https://source.sakaiproject.org/svn/sakai/branches/sakai-2.8.1 2.8.1
cd 2.8.1
mvn clean install sakai:deploy

If build fails, debug. If build is successful, start Tomcat. Check logs for warnings and errors.

Build and deploy release binaries to Sakai Maven2 release repo.

(minus) Warn: create backup folder of /var/www/html/maven2/org/sakaiproject on source.sakaiproject.org before deploying release binaries to repo.

Get copy of maven2/org/sakaiproject repo

Tar up maven2/org/sakaiproject and sftp or scp across the network to build machine and deploy binaries locally. This step is now prohibitively expensive in terms of download time.

(warning) Consider eliminating this step and instead adjust build script to deploy non-indie projects directly to the repo via scp.

The challenge here is that you need all the Maven metadata files locally so that they can be properly updated during the release.

Run sakai-cle-artifactmaker.bash

Script generates demo, bin and src tar/zip artifacts and then deploys release binaries to "local" repo updating Maven metadata files along the way.

TODO: add URL

No Format

$ bash sakai-cle-artifactmaker.bash [release version] [Source path]

$ bash sakai-cle-artifactmaker.bash 2.8.1 /Users/arwhyte/Development/svn/sakai/branches/2.8.1

Download samigo audio jar from Maven2 release repo and verify that jar is signed.

No Format

jarsigner -verify sakai-samigo-audio-2.8.1.jar

Check demo, bin and src artifacts

Update Sakai Maven2 repo

Transfer mavenrepo-2.8.1.tgz

...

3. 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 to source.sakaiproject.org.

(warning). Ensure backup copy of source.sakaiproject.org /var/www/html/maven2/org/sakaiproject exists. Then untar updated files:

...

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.

Update release pages

Make sure that external links to Confluence release pages are updated./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.

Update Jira

Visit the SAK project and release sakai-2.8.1. Move all open Jiras to next (tentative) version.

Update release documentation

Ideally this work should already be completed. But in case it's not update the following pages:

1. Release page: http://source.sakaiproject.org/release/2.8.0/
2. Confluence release documentation: https://confluence.sakaiproject.org/display/DOC/Sakai+CLE+2.8+release+notes