Committer release process
pre-requis
- request an account to the project owner (David Pollak)
- on the dav.scala-tools.org server
- as member of the group ‘net.liftweb’
- add to your $HOME/.m2/settings.xml
<settings> <servers> <server> <id>nexus.scala-tools.org</id> <username>''MY_LOGIN''</username> <password>''MY_PASSWORD''</password> </server> </servers> </settings>
deploy quick guide
- generate the jar :
mvn clean package - compile only :
mvn compile - compile + test :
mvn test - build all the artifact (jar with classes, archive with the project (src,…)) :
mvn package -Prelease - to install the artifact into your local repository :
mvn clean install - to deploy snapshot version on scala-tools :
mvn clean deploy - release (include tagging the source, changing the version, deploy to scala-tools repository…):
- deploy to check (no compilation issue, no deployement/transport issue) and to publish the last SNAPSHOT version
- generate a site (on local box), to check there is no site generation issue
- use the maven release plugin
mvn clean release:prepare -Prelease -Dusername=''MY_SVN_LOGIN'' mvn release:perform -Prelease
- to generate site (on local box)
mvn site - to publish the site
mvn clean site-deploy -Prelease
Release Procedure
D -x days
- send an vote to the mailing-list “lift-committers”
Subject: [VOTE] Release x.y.z for yyyy-MM-dd hh:mm Message: Releaser : name - voter reply to mail by
+1
0 (and comment)
-1 (and comment)
= H -24 =
- compute result of the vote
- send a reply email to “[VOTE] …” with result at H-24 so everyboby could note the hour in his timezone
H -0
We need Maven 2.2.1 and JDK 1.5 to build.
We also use maven-release-plugin
release (include tagging the source, changing the version, deploy to repository… you don’t need to install this plugin; Maven will handle it automatically):
- send a reply email to “[VOTE] …” with notification of beginning (eg add to subject “release : begin”)
- check on CI server that the last code compiled
- retreive the source code to release
mkdir tmp-release cd tmp-release git clone git@github.com:dpp/liftweb.git cd liftweb - edit liftweb/src/changes/changes.xml to reflect the release date
nano -w src/changes/changes.xml - commit the changes to master:
git commit -a -m "updated version" ; git push - create a new branch for the release:
Name it Lift-VERSION with VERSION = MAJOR.MINOR[.MICRO][-QUALIFIER], e.g. Lift-2.0-M8 or Lift-2.0.1
git checkout -b Lift-VERSION - Check that there are no SNAPSHOT dependencies
grep -H -r "--include=*.xml" SNAPSHOT * - Change the version in the poms from x-SNAPSHOT to the version x
nano -w pom.xml nano -w */pom.xml nano -w */*/pom.xml nano -w src/changes/changes.xml grep -H -r "--include=*.xml" SNAPSHOT * - commit
git commit -a -m "[release] prepare" git push origin Lift-VERSION:Lift-VERSION - generate and deploy the version (36 min)
rm -Rf $HOME/.m2/mvnsites/liftweb mkdir -p $HOME/.m2/mvnsites/liftweb mvn clean deploy site-deploy -U -Prelease - check there is no site generation issue
- open browser on
file:///<your_home>/.m2/mvnsites/liftweb/index.html - check pages
file:///<your_home>/.m2/mvnsites/liftweb/changes-report.html- use navigation parent/modules
file:///<your_home>/.m2/mvnsites/liftweb/lift-base/lift-webkit/scaladocs/index.html(and browse some packages)
- open browser on
- do some fix if need and redo the two previous step
- check that the new version is on
http://scala-tools.org/repo-releases/net/liftweb - tag the release & push the tag
Name it Lift-VERSION-release with VERSION = MAJOR.MINOR[.MICRO][-QUALIFIER], e.g. Lift-2.0-M8-release or Lift-2.0.1-release
git tag Lift-VERSION-release git push --tags - generate the announcement base text
mvn changes:announcement-generate -N more target/announcement/announcement.vm - change back to the master branch
git checkout master - add the new section (for the new release) into the changes.xml
nano -w src/changes/changes.xml - commit and push to the central repository
git commit -a -m "[release] start <version+1>-SNAPSHOT"; git push - check if push is visible on http://github.com/dpp/liftweb/tree/master
- upload manually the site (deploy through maven is too long with dav protocol :( )
cd $HOME/.m2/mvnsites rm liftweb.tar.bz2 tar -cjvf liftweb.tar.bz2 liftweb - upload liftweb.tar.bz2 to http://dav.scala-tools.org/mvnsites (via dav or ssh depends of your access right)
- send an email/notification to DPP or Derek for:
- untaring the archive (/var/www.vhosts/scala-tools.org/htdocs/mvnsites/) + set owner to apache
- update version into archetypeCatalog (/var/www.vhosts/scala-tools.org/htdocs/archetype-catalog.xml)
- update the Archetypes List (requires account (free registering))
- update wiki (with the last version)
- edit Template:LastReleaseVersion
- check template Template:NewBlankPrj, Template:NewBasicPrj
- edit this page section History
- send a reply email to “[VOTE] …” with notification of beginning (eg add to subject “release : end”) and copy into the body of the email the result of the annoucement : target/announcement/announcement.vm
History
Lift 1.1-M7
date: 2009-11-04
releaser: Charles Munat
total duration: ???
comments: Problems with Nexus/Hudson fixed by Josh. Otherwise smooth, but took most of the day.
Lift 1.1-M6
date: 2009-10-08
releaser: Charles Munat
total duration: 1h30
comments: Fairly smoothly. Forgot to update version number on commit and had to push twice. Doh.
Lift 1.0.2
date: 2009-09-10
releaser: Derek Chen-Becker
total duration: 1h45
comments:
- Generally went smoothly.
Lift 1.0.1
date: 2009-09-09
releaser: Derek Chen-Becker
total duration: 1h45
comments:
- Generally went smoothly.
- Weird IBM Chinese Locale errors made the build slow: http://jira.codehaus.org/browse/MPIR-142
= Lift 1.1-M5 =
;date: 2009-09-08
;releaser: Charles Munat
;total duration: 6h45
;comments:
:* Non-stop hassles, mostly related to having switched to a new computer recently. Needed a bigger heap was the main thing.
= Lift 1.1-M4 =
;date: 2009-08-04
;releaser: Charles Munat
;total duration: 1h45
;comments:
:* No problems. Had guidance from Jorge, who disappeared for 23 mins, so actual duration was more like 1h22.
= Lift 1.1-M3 =
;date: 2009-07-02
;releaser: Jorge Ortiz
;total duration: 1h20
;comments:
:* Charles had trouble with Maven. I finished up for him. No major troubles but the instructions need updating.
= Lift 1.1-M1 =
;date: 2009-05-01
;releaser: Jorge Ortiz
;total duration: 2+h
;comments:
:* Had to fix
:* Weird non-deterministic compile errors. (I’ve seen this happen before with Maven + Scala 2.7.4 + my Mac.) Eventually the compile went through.
:* Could not generate site (mvnsite) no matter how much I tried. Kept getting errors.
= Lift 0.9 =
;date: 2008-06-15
;releaser: David Bernard
;total duration: 1h20
;comments:
:* failed to tag (in git) the code (tag doesn’t display on github)
:* update the process to reflect the change of scm : svn to git
:* remove some step in the process like dry run for deploy,… (+/- useless and very longer)
:* (same as previous release) I really should improve the upload
:* (same as previous release) I should remove useless upload (like xxx-project.tar.gz and xxx-project.zip, and only keep xxx-project.tar.bz2)
= Lift 0.8 =
;date: 2008-05-09
;releaser: David Bernard
;total duration: 3H30
;comments:
:* api is not deployed (issue with some classes, I’ll deployed ASAP)
:* I really should improve the upload
:* I should remove useless upload (like xxx-project.tar.gz and xxx-project.zip, and only keep xxx-project.tar.bz2)
:* I should diseable backup tool during release to avoid CPU/disk activity (compress 12Gb) and to avoid disk full => redo some operation 30min left
:* I should simply the process (may be remove some step)
= Lift 0.7 =
;date: 2008-04-03
;releaser: Steve Jenson
;total duration: 5:30 (new record holder)
;comments:
:* DAV account wasn’t ready, dpp fixed that
:* had a massive problem with mvn release half-building the release, had to roll back the 3 release changesets and start over
:* had recurring OutOfMemory errors even though I always started the build with at least 2G of free memory. Used MAVEN_OPTS=“-Xmx1024M -Xms1024M” to ensure I had enough memory.
:* Spotlight on OS X hogs up huge amounts of memory during the build. disable it for liftweb directory to keep your cpu usage lower.
:* had a problem with SVN not liking my LC_ALL, so set it to LC_ALL=en_US to get around it.
:* had a problem with Java not finding Maven so I had to do some shuffling of files around ($PATH had no effect on this error)
= Lift 0.6 =
;date: 2008-03-10
;releaser: Eric Torreborre
;total duration: 03:00:00 (yes, I have the record!)
;comments:
:* The first release:prepare failed because of svn. I had to do first an “svn update” on the command line to accept the certificate from the googlecode site, then I was able to re-execute that goal.
:* Had an issue when generating the Scaladoc, removed the site generation from the process (by adding -Dgoals=deploy to the mvn release:perform goal). This will be done later.
:* Eclipse was locking the jars in the repository, forbidding their update. This shown up as maven complaining about an undownloadable jar file (activation-1.0.2.jar)
:* I had to remove the old Scala 2.7.0 libs first from my local repository.
= Lift 0.5 =
;date: 2008-02-05
;releaser: Jorge Ortiz
;total duration: 01:30:00
;comments:
:* some test is running derby and not cleaning up after itself, had to manually delete lift/derby.log a few times
:* didn’t realize I had to edit changes.xml, will edit this page to reflect that
= Lift 0.4 =
;date: 2008-01-07
;releaser: David Bernard
;total duration: >02:00:00
;comments:
:* lot of trouble with dav on scala-tools.org
:* need to fix configuration on server
:* lot of timeout => TODO find an other protocol for deployement
= Lift 0.3.0 =
;date: 2007-12-07
;releaser: David Bernard
;total duration: 01:20:00
;comments:
:* first deploy on http://scala-tools.org/ (release, snapshots, mvnsites)
:* write the procedure
:* need to change the procedure during release, site-deploy (done by release:perform by default) is too long through dav protocol (files are push one by one != scp (create a zip, push, unzip))
