Re: Release automation (Was: svn commit: r641291 - /jackrabbit/branches/1.4/jackrabbit-jcr-commons/pom.xml)

2008-03-27 Thread Felix Meschberger
Hi,

See also [1]. This is the documented process we use over in Felix: It is
based on a build profile (release) in the parent pom [2] (which is
different from the root/reactor pom, which is important and simplifies
matters). 

This profile has two setups:
  * generate the signatures
  * build the source and binary artifacts

I think, this catches just about everything and enables automation by
allowing to perform a release build with just two commands : mvn
release:prepare and mvn release:perform.

Now, part of a release build process is tagging the project and raising
version numbers. I think it is very valuable that the release plugin
also automates this step (except for the pom.xml license header removal
if the  tag is not on a single line) as it is certainly error
prone and worth automation.

Regards
Felix

[1] http://felix.apache.org/site/release-management.html
[2] http://svn.apache.org/repos/asf/felix/trunk/pom/pom.xml

Am Mittwoch, den 26.03.2008, 22:53 +0200 schrieb Jukka Zitting:
> Hi,
> 
> On Wed, Mar 26, 2008 at 10:01 PM, Felix Meschberger <[EMAIL PROTECTED]> wrote:
> >  Am Mittwoch, den 26.03.2008, 16:29 +0200 schrieb Jukka Zitting:
> >  > One of the reasons why I prefer not to use the maven-release-plugin.
> >  > Not terribly bad IMHO, but not ideal either.
> >
> >  Hmm, this is a known issue with the maven-release-plugin: the 
> >  tag must be on a single line, otherwise this happens...
> 
> ACK. I think we can live with this.
> 
> >  On the other hand, if this is the sole issue with the
> >  maven-release-plugin, so what ? There is a known workaround. On the
> >  other hand the plugin takes a lot of manual work off our shoulders and
> >  therefore is worth considering.
> 
> Perhaps it's just my prejudice, but one concern with
> maven-release-plugin is that it takes over the SCM interaction and
> commits stuff directly to svn. I'm much more fond of tools like
> svnmerge.py that just prepare a set of changes in the local copy and
> let the user review and explicitly commit those changes. Of course you
> can revert things in svn if the tool does something wrong, so perhaps
> I'm just being overly paranoid.
> 
> Another issue is that maven-release-plugin only really cares about
> Maven, whereas our release process should primarily be producing the
> -src.jar package that simply contains the exact release sources as
> tagged in svn. We could let maven-release-plugin do the release work
> and then create the -src.jar from the produced tag, but that seems a
> bit backwards and requires extra work. The maven-release-plugin also
> doesn't support the concept of a release vote.
> 
> So, while I'm all for increasing release automation, I'm not yet
> convinced that maven-release-plugin is the tool we should be using.
> But feel free to convince me otherwise. :-)
> 
> BR,
> 
> Jukka Zitting



Re: Release automation (Was: svn commit: r641291 - /jackrabbit/branches/1.4/jackrabbit-jcr-commons/pom.xml)

2008-03-27 Thread Jukka Zitting
Hi,

See also a related thread on Commons:
http://markmail.org/message/3emjaadwpf7cr5q3.

BR,

Jukka Zitting


Re: Release automation (Was: svn commit: r641291 - /jackrabbit/branches/1.4/jackrabbit-jcr-commons/pom.xml)

2008-03-26 Thread Alexander Klimetschek

Hi all Maven junkies out there!


Another issue is that maven-release-plugin only really cares about
Maven, whereas our release process should primarily be producing the
-src.jar package that simply contains the exact release sources as
tagged in svn. We could let maven-release-plugin do the release work
and then create the -src.jar from the produced tag, but that seems a
bit backwards and requires extra work.


That actually is the "maven way" to do it (note that nobody said that  
this has to be a good way ;-) ):


1) run mvn release which creates a new tag in svn
2) check out the newly tagged source tree separately
3) build the release binaries and other stuff from here, using normal  
mvn package and deploy


And don't forget the performRelease=true on the last one to build the  
source, javadoc and test jars (and whatever you got).



The maven-release-plugin also
doesn't support the concept of a release vote.


Well, this is true. You have to delete the tag and start over if  
changes need to be made to the release. Or you create an additional  
release like -vote or -RC1 before.



So, while I'm all for increasing release automation, I'm not yet
convinced that maven-release-plugin is the tool we should be using.
But feel free to convince me otherwise. :-)


Once you have more than a handful sub-modules and sub-sub modules  
(lets say > 10), using the release plugin is easier than manually  
fiddling.


Or you avoid that by inheriting the version number from the root pom  
and have inter-module dependencies use that global version number as  
well. But as it was discussed recently, single sub-modules like  
jackrabbit-jcr-commons will be released in seperate cycles (to better  
support osgi bundle management). I think then your cross module  
dependency version will be different for each module, so you will have  
to manually change them. The release plugin could help here - although  
everything will be tagged in svn then.


Regards,
Alex

--
Alexander Klimetschek
[EMAIL PROTECTED]