目次

Version 1, last updated by mads379 at Apr 16 08:45 UTC

pre-requis

  1. request an account to the project owner (David Pollak)
    • on the dav.scala-tools.org server
    • as member of the group ‘net.liftweb’
  2. 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)
  • 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)
  • 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 parts of pom because of changes to scala-tools
:* 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))