Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Indie projects, which leverage the Maven release plugin, are easier to manage. Releases are performed from existing *.x maintenance branches (no release branch is required) and the plugin handles pom version changes, tag creation and binaries generation and deployment automatically.

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

...

No Format
$ bash sakaitagbuilder-2.8.bash [Jira ticket number] \
[source branch] \ 
[take HEAD=true|false] \
[target=branches|tags] \
[sakai version] \
[version suffix=mXX|aXX|bXX|rcXX]

$ bash sakaitagbuilder-2.8.bash SAK-20967 sakai-2.8.x true branches 2.8.1

Preparing the release branch for release

...

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

...

version.

1. Update <version>: find/replace 2.*-SNAPSHOT with release version

No Format
version.service=RELEASE
<version>2.8-SNAPSHOT</version> -> <version>2.8.1</version> 
{noformat]

2. Update <sakai.version> (master pom.xml)
{code:xml}
<sakai.version>2.8.1</sakai.version>
{code}

3. Update <properties> (master pom.xml)

{code:xml}
<sakai.version>2.8.1</sakai.version>
<sakai.kernel.version>1.2.5</sakai.kernel.version>
 . . .
<sakai.basiclti.version>1.3.3</sakai.basiclti.version>
<sakai.common.version>1.1.3</sakai.common.version>
<sakai.contentreview.version>2.8.5</sakai.contentreview.version>
<sakai.edu-services.version>1.1.2</sakai.edu-services.version>
<sakai.ets.version>0.5.3</sakai.ets.version>
<sakai.entitybroker.version>1.4.2</sakai.entitybroker.version>
<sakai.hybrid.version>1.1.4</sakai.hybrid.version>
<sakai.jsf.version>2.8.2</sakai.jsf.version>
<sakai.msgcntr.version>2.8.1</sakai.msgcntr.version>
<sakai.polls.version>1.4.2</sakai.polls.version>
<sakai.profile.version>2.8.2</sakai.profile.version>
<sakai.profile2.version>1.4.2</sakai.profile2.version>
<sakai.resetpass.version>2.8.2</sakai.resetpass.version>
<sakai.sakai-mock.version>2.8.2</sakai.sakai-mock.version>
<sakai.samigo.version>2.8.2</sakai.samigo.version>
<sakai.scheduler.version>2.8.1</sakai.scheduler.version>
<sakai.search.version>1.3.4</sakai.search.version>
<sakai.shortenedurl.version>1.0.2</sakai.shortenedurl.version>
<sakai.sitestats.version>2.2.1</sakai.sitestats.version>
<sakai.webservices.version>1.0.2</sakai.webservices.version>
{code}



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

h5. Version

version.service=RELEASE
version.sakai=2.8.1

...

No Format

version.service=DEMO

...


version.sakai=2.8.1

...

No Format

version.service=SAMPLE

...


version.sakai=2.8.1

...

Stealth settings

Stealth the following tools in both release and demo:

Release

...

No Format


h5. Stealth settings

Stealth the following tools in both release and demo:

Release

...

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

...

  1. No Format
    
    
    

...

  1. Demo
    
  2. STEALTH

...

  1. TOOLS.

...

  1. A

...

  1. stealth

...

  1. tool

...

  1. is

...

  1. a

...

  1. tool

...

  1. that

...

  1. is

...

  1. running

...

  1. in

...

  1. Sakai,

...

  1. but

...

  1. is

...

  1. not

...

  1. available

...

  1. to

...

  1. be

...

  1. added

...

  1. to

...

  1. a

...

  1. site

...

  1. in

...

  1. Worksite

...

  1. Setup.

...


  1. stealthTools@org.sakaiproject.tool.api.ActiveToolManager=sakai.profile,sakai.search
No Format

...

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

...



{{reference/docs/sakai.properties

...

No Format

}}

version.service=RELEASE

...


version.sakai=2.8.1

...

POM UPDATES

...

No Format


h4. POM UPDATES

h5. Update all Sakai non-indie pom.xml <version> values to 2.8.1.

h5.

...

 Update /master/pom.xml <sakai.version> to 2.8.1.

...



{code
:xml
xml
}
<sakai.version>2.8.1</sakai.version>

...


{code}

h5. Ensure that /master/pom.xml includes all the correct indie version properties.

...



{code
:xml
xml
}
<sakai.version>2.8.1</sakai.version>
<sakai.kernel.version>1.2.1</sakai.kernel.version>
. . .
<sakai.basiclti.version>1.3.1</sakai.basiclti.version>
<sakai.common.version>1.1.2</sakai.common.version>
<sakai.contentreview.version>2.8.4</sakai.contentreview.version>
<sakai.edu-services.version>1.1.1</sakai.edu-services.version>
<sakai.ets.version>0.5.1</sakai.ets.version>
<sakai.entitybroker.version>1.4.1</sakai.entitybroker.version>
<sakai.hybrid.version>1.1.3</sakai.hybrid.version>
<sakai.jsf.version>2.8.1</sakai.jsf.version>
<sakai.msgcntr.version>2.8.1</sakai.msgcntr.version>
<sakai.polls.version>1.4.1</sakai.polls.version>
<sakai.profile.version>2.8.1</sakai.profile.version>
<sakai.profile2.version>1.4.0</sakai.profile2.version>
<sakai.resetpass.version>2.8.1</sakai.resetpass.version>
<sakai.sakai-mock.version>2.8.1</sakai.sakai-mock.version>
<sakai.samigo.version>2.8.1</sakai.samigo.version>
<sakai.scheduler.version>2.8.1</sakai.scheduler.version>
<sakai.search.version>1.3.2</sakai.search.version>
<sakai.shortenedurl.version>1.0.1</sakai.shortenedurl.version>
<sakai.sitestats.version>2.2.0</sakai.sitestats.version>
<sakai.webservices.version>1.0.1</sakai.webservices.version>

...


{code}

h5. Confirm /master/pom.xml Sakai Maven plugin <version> from 1.2.0

...



{code
:xml
xml
}

<plugin>
  <inherited>true</inherited>
  <groupId>org.sakaiproject.maven.plugins</groupId>
  <artifactId>sakai</artifactId>
    <version>1.2.0</version>
    . . . .
</plugin>

GENERATE RELEASE ARTIFACTS

Get copy of Maven2 repo

...


{code}

h4. GENERATE RELEASE ARTIFACTS

h5. 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

...

  

h5. Local build machine environment

# Check out 2.8.1 branch

...


# clean Tomcat 5.5.33

...


# empty .m2/repository/org/sakaiproject

...


# new MySQL 5.1.x sakai db

...

 
# Confirm maven-taglib is defined in .m2/settings.xml

...

noformat



<!--

...

Reference

...

plugins

...

in

...

order

...

to

...

use

...

<goalPrefix>

...

short-hand

...

-->

...


<pluginGroups>
<pluginGroup>net.sourceforge.maven-taglib</pluginGroup>

...


</pluginGroups>

...

No Format



h5. /master/pom.

...

xml

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

...



1.

...

Code Block
xmlxml
 {{<distributionManagement>}}

{code:xml}
<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>
{code}

2. {{maven-taglib-plugin

...

Code Block
xmlxml
}}

{code:xml}
<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>
{code}

3. wagon-webdav {{<build>

...

Code Block
xmlxml
}} extension

{code:xml}
<!-- Required for Dav -->
<extensions>
    <extension>
	<groupId>org.apache.maven.wagon</groupId>
	<artifactId>wagon-webdav</artifactId>
        <version>1.0-beta-2</version>
    </extension>
</extensions>

...

{code}

h5. (-) /reference/conversion

...



Review sql conversion scripts, update and

...

 commit as necessary.

h5. base pom.xml

...



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

...



{code
:xml
xml
}
<plugin>
                <!-- javadocs -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.6.1</version>
                <configuration>
                    <debug>true</debug>
                    <links>
                        <link>http://java.sun.com/j2se/1.5.0/docs/api/
                        </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>
                </configuration>
</plugin>
{code}

2. Confirm that taglib profile is included.

...



{code
:xml
xml
}

<profile>
       <id>taglib</id>
            <modules>
                <module>gradebook/app/ui</module>
                <module>help/help-tool</module>
                <!-- <module>jsf/jsf-widgets</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>

...

{code}

h5.  Run sakaiartifactgenerator.bash

...

noformat
 


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


h5. Download and check samigo audio jar for signature

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

No Format


h5. 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  

*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

No Format


2. Test the sakai-bin archives

...



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

...

noformat



tar

...

-czvf

...

sakai-bin-2.8.1.tgz

...

ECLv2.text

...

common

...

components

...

licenses

...

server

...

shared webapps

No Format
webapps
3. Run the demo artifact.

...

Update Sakai Maven2 repo

...



h3.  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:

No Format

sudo

...

tar

...

-xvzf

...

mavenrepo-2.8.1.tgz

...

-C

...

/var/www/html/

No Format


h3. Cut release tag from 2.8.1 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.

...

noformat



bash

...

sakaitagbuilder-2.8.bash

...

JIRA

...

ISSUE

...

sakai-2.8.1

...

tags

...

2.8.1

...

No Format

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.

...