How to build and publish a release of Taverna.
This is not the real procedure, ask Stuart for the real details. This is a rough outline over what we have to do:
- Update manual for changes and new features, including version numbers
- Tag HEAD as Root-Taverna-1-6-2 (Eclipse might be dodgy on this, retry a few times or increase the CVS timeout value)
- Make a new branch in CVS, Taverna-1-6-2 based on tag Root-Taverna-1-6-2
- Eclipse should now have switched to the branch for you
- Update absolutely all version numbers in
pom.xml, profiles and source code for the branch.
: stain@mira ~/Documents/workspace/taverna1.x;for file in $(find . -name pom.xml) ;
do cat $file | sed "s/1.6-SNAPSHOT/1.6.2.0/g" > /tmp/$$ && cat /tmp/$$ > $file; done
# What's left with old version number? Ignore compiled binaries
: stain@mira ~/Documents/workspace/taverna1.x;grep -ri 1.6-SNAPSHOT . | grep -v Binary | grep -v target | grep -v /bin
./examples/workflowlauncher/src/main/java/net/sf/taverna/example/WorkflowLauncherWrapper.java: public static final String TAVERNA_BASE_VERSION = "1.6-SNAPSHOT";
./raven/src/main/java/net/sf/taverna/raven/repository/impl/LocalRepository.java: private final String RAVEN_VERSION="1.6-SNAPSHOT";
./src/main/resources/workbench/conf/raven.properties:raven.loader.version = 1.6-SNAPSHOT
./src/main/resources/workbench/conf/raven.properties:raven.profilelist=http://www.mygrid.org.uk/taverna-tests/testprofiles/taverna-1.6-SNAPSHOT-profiles.xml http://www.mygrid.org.uk/taverna/updates/1.5.2/taverna-1.5.2-profiles.xml http://bioinf.ncl.ac.uk/mirror/taverna/updates/1.5.2/taverna-1.5.2-profiles.xml http://mirror.omii.ac.uk/taverna/updates/1.5.2/taverna-1.5.2-profiles.xml
./src/main/resources/workbench/dataviewer.bat:java %ARGS% -jar "%~dp0\taverna-bootstrap-1.6-SNAPSHOT.jar" %*
...
# Repeat sed-replace for other file types
: stain@mira ~/Documents/workspace/taverna1.x;for file in $(find . -type f -name '*xml') ; do cat $file | sed "s/1.6-SNAPSHOT/1.6.2.0/g" > /tmp/$$ && cat /tmp/$$ > $file; done
: stain@mira ~/Documents/workspace/taverna1.x;for file in $(find . -type f -name '*java') ; do cat $file | sed "s/1.6-SNAPSHOT/1.6.2.0/g" > /tmp/$$ && cat /tmp/$$ > $file; done
: stain@mira ~/Documents/workspace/taverna1.x;for file in $(find . -type f -name '*bat') ; do cat $file | sed "s/1.6-SNAPSHOT/1.6.2.0/g" > /tmp/$$ && cat /tmp/$$ > $file; done
: stain@mira ~/Documents/workspace/taverna1.x;for file in $(find . -type f -name '*sh') ; do cat $file | sed "s/1.6-SNAPSHOT/1.6.2.0/g" > /tmp/$$ && cat /tmp/$$ > $file; done
: stain@mira ~/Documents/workspace/taverna1.x;for file in $(find . -type f -name '*properties') ; do cat $file | sed "s/1.6-SNAPSHOT/1.6.2.0/g" > /tmp/$$ && cat /tmp/$$ > $file; done
: stain@mira ~/Documents/workspace/taverna1.x;grep -ri 1.6-SNAPSHOT . | grep -v Binary | grep -v target | grep -v /bin
: stain@mira ~/Documents/workspace/taverna1.x; # ie. nothing more found
: stain@mira ~/Documents/workspace/taverna1.x;vim taverna-enactor/pom.xml
# Change version number of freefluo-taverna-exts, should be version 1.6.2, not 1.6.2.0
uk.org.mygrid.resources
freefluo-taverna-exts
1.6.2
(TODO: Make it so that freefluo-taverna-exts also has a full version number, to avoid confusion)
- Deploy a new version of freefluo-taverna-exts by downloading and modifying the version numbers of an older release. (The only change is the Taverna dependency):
: stain@mira ~/92;wget http://www.mygrid.org.uk/maven/repository/uk/org/mygrid/resources/freefluo-taverna-exts/1.6.2/freefluo-taverna-exts-1.6.2.jar
: stain@mira ~/92;wget http://www.mygrid.org.uk/maven/repository/uk/org/mygrid/resources/freefluo-taverna-exts/1.6.2/freefluo-taverna-exts-1.6.2.pom
: stain@mira ~/92;vim freefluo-taverna-exts-1.6.2.pom
# Make sure scufl-model and taverna-enactor are versioned fully, say 1.6.2.0, while the version of freefluo-taverna-exts don't include the minor number, so it's 1.6.2.
: stain@mira ~/92;mvn deploy:deploy-file -Durl=scpexe://rosalind.cs.man.ac.uk/local/www/mygrid/maven/repository -DrepositoryId=mygrid-repository -Dfile=freefluo-taverna-exts-1.6.2.jar -DpomFile=freefluo-taverna-exts-1.6.2.pom
[INFO] Scanning for projects...
..
[INFO] [deploy:deploy-file]
Uploading: scpexe://rosalind.cs.man.ac.uk/local/www/mygrid/maven/repository/uk/org/mygrid/resources/freefluo-taverna-exts/1.6.2/freefluo-taverna-exts-1.6.2.jar
[INFO] Retrieving previous metadata from mygrid-repository
[INFO] Uploading repository metadata for: 'artifact uk.org.mygrid.resources:freefluo-taverna-exts'
[INFO] Retrieving previous metadata from mygrid-repository
[INFO] Uploading project information for freefluo-taverna-exts 1.6.2
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
..
- Modify net.sf.taverna.tools.Repositories to read from users' local repositories in home directory named after previous version. So for the 1.6.2 release, we'll need to add the 1.6.1 repository:
String [] applications=new String[]{"Taverna","Taverna-1.5.2","Taverna-1.6.0"};
to:
String [] applications=new String[]{"Taverna","Taverna-1.5.2","Taverna-1.6.0","Taverna-1.6.1"};
- Check that the
src/main/resources/workbench/conf/raven.properties specifies the correct version for the artifacts and profile lists, say:
raven.loader.groupid = uk.org.mygrid.taverna.raven
raven.loader.artifactid = raven
raven.loader.version = 1.6.2.0
..
raven.target.groupid = uk.org.mygrid.taverna
raven.target.artifactid = taverna-workbench
raven.target.version = 1.6.2.0
..
raven.profilelist=http://www.mygrid.org.uk/taverna/updates/1.6.2/taverna-1.6.2-profiles.xml http://bioinf.ncl.ac.uk/mirror/taverna/updates/1.6.2/taverna-1.6.2-profiles.xml http://mirror.omii.ac.uk/taverna/updates/1.6.2/taverna-1.6.2-profiles.xml
..
raven.pluginsite.1=http://www.mygrid.org.uk/taverna/updates/1.6.2/plugins/ http://bioinf.ncl.ac.uk/mirror/taverna/updates/1.6.2/plugins/ http://mirror.omii.ac.uk/taverna/updates/1.6.2/plugins/
Remove any references to test profiles or test repositories.
- Do a full, clean build to ensure the new version number works
: stain@mira ~/Documents/workspace/taverna1.x;mvn clean install
[INFO] Scanning for projects...
[INFO] Reactor build order:
[INFO] Taverna
...
[INFO] Taverna Scavenger UI .................................. SUCCESS [0.534s]
[INFO] Taverna Workbench ..................................... SUCCESS [0.698s]
[INFO] Taverna tools ......................................... SUCCESS [0.569s]
[INFO] Taverna Contrib ....................................... SUCCESS [45.874s]
[INFO] Workflow launcher example ............................. SUCCESS [0.332s]
[INFO] Example code .......................................... SUCCESS [0.022s]
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5 minutes 15 seconds
[INFO] Finished at: Thu Oct 04 14:40:44 WEST 2007
[INFO] Final Memory: 21M/44M
[INFO] ------------------------------------------------------------------------
- Double-check that the profile in
taverna-bootstrap/src/main/resources/default-profile.xml depends on taverna artifacts of the version to be released, and that the profile itself is of that version. Example:
<profile version="1.6.2.0" name="Taverna Workbench">
<!-- processors -->
<artifact groupId="uk.org.mygrid.taverna.processors" artifactId="taverna-biomart-processor" version="1.6.2.0"/>
<artifact groupId="uk.org.mygrid.taverna.processors" artifactId="taverna-localworkers" version="1.6.2.0"/>
..
<!-- raven -->
<artifact groupId="uk.org.mygrid.taverna.raven" artifactId="raven" version="1.6.2.0"/>
<!-- system sax parser -->
<artifact groupId="xerces" artifactId="xercesImpl" version="2.6.2" system="true"/>
..
<!-- system log4j for Raven's Log4jLog proxy -->
<artifact groupId="log4j" artifactId="log4j" version="1.2.12" system="true"/>
</profile>
- Check in net.sf.taverna.tools.Bootstrap that APPLICATION is without the minor version number, as this will determine the name for the user home directory. Example:
public static final String VERSION = "1.6.2";
public static final String APPLICATION = "Taverna-" + VERSION;
- For a new bootstrapper, do
mvn package assembly:assembly, as described in BuildingTaverna.
: stain@mira ~/Documents/workspace/taverna1.x;mvn package assembly:assembly
..
[INFO] [assembly:assembly]
[INFO] Building zip: /Users/.stain/unencrypted/workspace/taverna1.x/target/taverna-1.6.2.0-bin.zip
..
[INFO] BUILD SUCCESSFUL
..
: stain@mira ~/Documents/workspace/taverna1.x/taverna-bootstrap/src/main/resources;scp default-profile.xml rosalind:
default-profile.xml 100% 3590 3.5KB/s 00:00
: stain@mira ~/Documents/workspace/taverna1.x/taverna-bootstrap/src/main/resources;ssh rosalind
Last login: Thu Oct 4 15:47:36 2007 from webcam3
Your Operating System is Linux
Welcome to ... the research domain
WD=/home/ssoiland
ssoiland@rosalind-) cd /local/www/mygrid/taverna/updates
ssoiland@rosalind-) ls
1.5 1.5.2 1.6.0 1.6.1
ssoiland@rosalind-) mkdir 1.6.2
ssoiland@rosalind-) cd 1.6.2/
taverna-1.6.1-profiles.xml taverna-1.6.1.1-profile.xml
ssoiland@rosalind-) cp /home/ssoiland/default-profile.xml taverna-1.6.2.0-profile.xml
ssoiland@rosalind-) cp ../1.6.1/*profiles.xml .
ssoiland@rosalind-) mv taverna-1.6.1-profiles.xml taverna-1.6.2-profiles.xml
ssoiland@rosalind-) vim taverna-1.6.2-profiles.xml
<profilesversions>
<profile>
<version>1.6.2.0</version>
<name>Taverna Workbench</name>
<location>taverna-1.6.2.0-profile.xml</location>
<description>The initial Taverna 1.6.2 release.</description>
</profile>
</profilesversions>
Check that the location filename matches the profile filename. Check permissions that the directory is readable and executable for others, and the profiles are readable others:
ssoiland@rosalind-) ls -al
total 16
drwxr-sr-x 2 ssoiland taverna 4096 Oct 4 15:52 .
drwxrwsr-x 7 root taverna 4096 Oct 4 15:50 ..
-rwxr-xr-x 1 ssoiland taverna 240 Oct 4 15:52 taverna-1.6.2-profiles.xml
-rw-r--r-- 1 ssoiland taverna 3590 Oct 4 15:50 taverna-1.6.2.0-profile.xml
Double-check in a browser that you can access both files. Note that if you are adding a minor version (say 1.6.2.1),
don't modify xx-profiles.xml yet, as it would appear as an update for existing Taverna users.
- If not a new bootstrapper, do all the testing by switching versions in old Taverna installation, starting with =-Draven.profile=http://blah
- Do a MacRelease based on the
taverna-workbench-1.xx.zip, should result in a taverna-workbench-1.xx.dmg
- Under take some MinimalTesting
- Progress to lots of testing with some existing users, different upgrades paths, etc.
- Generate/write release notes
- If new bootstrapper, release on SourceForge, both
.zip, .dmg
- Always release new sourcecode dump
*-src.zip and regenerate javadoc at http://taverna.sourceforge.net/api/
- Update web pages, including http://taverna.sourceforge.net/, http://taverna.sourceforge.net/wordpress/, http://www.mygrid.org.uk/, http://www.omii.ac.uk/projects/display_project.jsp?projectid=76
- Update symlinks
taverna-1.5-profile.xml and raven.properties - old 1.5.* clients should now get the update icon appearing on startup, which of course should work.
- Send announcement to
taverna-users, taverna-hackers and possibly omii-announce
- Drink beer to celebrate.